python - Python/Django 中的个性化/随机 URL

标签 python html django url random

我是一名 Python 初学者(顺便说一句,也是英语初学者)。 我刚刚在 Python/Django 中创建了一个简单的表单,用于创建、编辑和删除项目。 我有指向我的 URL 的 HTML 链接,例如:

文件.HTML:

<INPUT Type="BUTTON" VALUE="Edit" ONCLICK="window.location.href='/edit/{{ object.id }}/'">

URLS.PY:

url(r'^edit/(?P<id>\d+)/$', 'app.views.editobj'),

View .PY:

def editobj(request, id):

但是,当然,有一个问题,我不希望人们直接输入 URL(仅当单击按钮时),因为有人可以直接输入 URL:/removeobj/1 并删除对象 ID=1。我想做的是创建不同的 URL,也许是随机的,这样用户永远不会猜测按钮将打开的 URL 是什么,当然,它确实可以与 ID 参数一起使用,所以当它要编辑/删除,打开正确的对象。 我希望我清楚自己的需求。谢谢。

最佳答案

生成随机 URL 的效率非常低,更不用说实现起来也非常困难。执行您所要求的操作的常见方法是 POST 到 URL。我认为您应该多阅读一些关于 Django POSTing 的内容,因为它将帮助您更好地理解它的作用。无论如何,这里是一个使用它的示例:

url.py

url(r'^delete/$', 'app.views.delete_object', name="delete_obj"),

View .py

def delete_object(request):
""" Get the ID of an object via POST, then delete it. """
    if request.method == 'POST'  # This makes sure the request is a POST
        obj_id = request.POST['obj_id']
        obj = MODELNAME.objects.get(id=obj_id)  # Use your model name here

        # You can use if conditions here to make sure the object you just
        # retrieved is allowed to be deleted by this user, or in general.

        obj.delete()

        messages.success(request, 'Object successfully deleted!')
    return redirect(reverse('index'))  # Make sure you use a name that exists

.html

<form method="POST" action="{% url 'delete_obj' %}">
    {% CSRF_TOKEN %}
    <input type="hidden" value="{{ obj.id }}" name="obj_id" />
    <button type="submit">Submit</submit>
</form>

您可以在views.py中使用更多逻辑来确保允许删除该对象,但在大多数情况下,我编写的代码应该让您对创建POST的方式有一定的了解 -> 删除对象工作流程。欢迎在我的答案下面的评论部分提问。

关于python - Python/Django 中的个性化/随机 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29546621/

相关文章:

python - 在 Python 中测试回文

html - 自动调整图像大小以适应浏览器 (css Html)

Django 上传和读写大excel文件

python - 如何修复设置 Django 1.9 应用程序时无法序列化错误

python - 如何在 Django 中渲染缓存的 JSONP View

php变量实际值未插入表中

javascript - Django Post 请求适用于 chrome 但不适用于 firefox

Django 网址测试

python - 将 None 而不是 Series 传递给函数时出错

javascript - 从文件名javascript中删除非法字符