如何在Django中的表单操作中传递url标题

2024-04-18 11:04:13 发布

您现在位置:Python中文网/ 问答频道 /正文

很抱歉,我在学习django,遇到了一个问题。
我正在尝试将页面标题传递给url,该url将在.md文件的视图中以该标题的名称进行搜索。(页面的标题是从视图中的其他函数(即{{title}})动态显示的)。
HTML:

<form action="{% url 'edit' %}">
{% csrf_token %}
<div class="form-group mt-4">
    <button class="btn btn-outline-info" type="submit">Edit page</button>
</div>

URL.py:

path("wiki/edit/", views.edit_page, name="edit")

views.py:

def edit_page(request, page):
    if request.method == "GET":
        return render(request,"encyclopedia/edit_page.html", {
            "pagename": page,
            "html": markdown2.markdown(util.get_entry(page))
        })

这方面的最佳做法是什么。非常感谢


Tags: pydivform视图url标题requesthtml
2条回答

仅将此/<str:page>添加到您的路径,这意味着在url的这一部分放置任何字符串,您将在视图函数的页面参数中获得此字符串

path("wiki/edit/<str:page>", views.edit_page, name="edit")

而对于表单操作,则放置{%url 'edit' title %}

您刚刚错过了一点,唯一需要更新的部分是html模板和URL.py

<form action="{% url 'edit' page=title %}">
  {% csrf_token %}
  <div class="form-group mt-4">
    <button class="btn btn-outline-info" type="submit">Edit page</button>
  </div>

您的URL.py应为:

urls.py path("wiki/edit/(?P<page>.+?)/$", views.edit_page, name="edit")

请注意,在传递带有空格或字符的标题时,此方法非常理想

相关问题 更多 >