Django Python - 使用预填充表单创建登陆页面
Django Python - Creating a landing page with a prepopulated form
我正在为 CS50 的网络课程开发一个项目,用户可以在其中访问维基百科模型并编辑条目。
现在我很难正确加载条目的编辑页面。现在我似乎无法从条目页面上的编辑按钮获得 'entry' 标题,以便页面加载条目 title/content。当前的实现抛出这个错误
"Reverse for 'edit_landing' with arguments '('title',)' not found. 1 pattern(s) tried: ['edit_landing$']"
我试过将“title”换成“entry”,甚至声明“entry = entry”或“entry = title”,但似乎没有任何效果。我对 Django 如何在 URL 中传递变量仍然感到困惑。
我已经尝试了大约 4 或 5 次实施,但我完全不知道如何去做。现在分离编辑登陆和编辑功能似乎可行。
如有任何帮助,我们将不胜感激。非常感谢!
到目前为止,这是我的代码:
views.py:
def edit_landing_page(request, entry):
edit = EditEntryForm({'content':(util.get_entry(entry))})
return render(request, "encyclopedia/edit.html", {
{"edit":edit}
})
def edit(request, entry):
if request.method == "POST":
util.save_entry(entry)
return redirect('wiki'+entry)
else:
content = util.get_entry(entry)
return render(request, "encyclopedia/edit.html", {
"title": entry,
})
urls.py:
urlpatterns = [
path("", views.index, name="index"),
path("wiki/<str:entry>", views.entry_page, name="entry"),
path("edit_landing",views.edit_landing_page, name="edit_landing"),
path("wiki/<str:title>", views.edit, name="edit"),
path("search", views.search, name="search"),
path("random", views.random_page, name="random"),
path("create_landing",views.create_landing_page, name="create_landing"),
path("create_entry",views.create_entry, name="create_entry")
]
我的条目html:
{% extends "encyclopedia/layout.html" %}
{% block title %}
{{title}}
{% endblock %}
{% block body %}
{{ entry|safe }}
<a role-"button" class="btn btn-primary" href="{% url 'encyclopedia:edit_landing' entry%}" method="POST">Edit</a>
{% endblock %}
我的编辑页面html:
{% extends "encyclopedia/layout.html"%}
{% load crispy_forms_tags%}
{% block title%} Edit Entry {%endblock%}
{% block body %}
<h1>Edit Entry</h1>
<form action= "{% url 'encyclopedia:edit'%}" method="POST">
{% csrf_token %}
<div class="form-group">
{{ form | crispy | safe }}
</div>
<input class="btn btn-primary" type="submit" value="Submit">
</form>
{% endblock %}
您的 URL 模式没有为 edit_landing 定义参数,例如“edit”。因此反向不起作用。
我正在为 CS50 的网络课程开发一个项目,用户可以在其中访问维基百科模型并编辑条目。
现在我很难正确加载条目的编辑页面。现在我似乎无法从条目页面上的编辑按钮获得 'entry' 标题,以便页面加载条目 title/content。当前的实现抛出这个错误
"Reverse for 'edit_landing' with arguments '('title',)' not found. 1 pattern(s) tried: ['edit_landing$']"
我试过将“title”换成“entry”,甚至声明“entry = entry”或“entry = title”,但似乎没有任何效果。我对 Django 如何在 URL 中传递变量仍然感到困惑。
我已经尝试了大约 4 或 5 次实施,但我完全不知道如何去做。现在分离编辑登陆和编辑功能似乎可行。
如有任何帮助,我们将不胜感激。非常感谢!
到目前为止,这是我的代码:
views.py:
def edit_landing_page(request, entry):
edit = EditEntryForm({'content':(util.get_entry(entry))})
return render(request, "encyclopedia/edit.html", {
{"edit":edit}
})
def edit(request, entry):
if request.method == "POST":
util.save_entry(entry)
return redirect('wiki'+entry)
else:
content = util.get_entry(entry)
return render(request, "encyclopedia/edit.html", {
"title": entry,
})
urls.py:
urlpatterns = [
path("", views.index, name="index"),
path("wiki/<str:entry>", views.entry_page, name="entry"),
path("edit_landing",views.edit_landing_page, name="edit_landing"),
path("wiki/<str:title>", views.edit, name="edit"),
path("search", views.search, name="search"),
path("random", views.random_page, name="random"),
path("create_landing",views.create_landing_page, name="create_landing"),
path("create_entry",views.create_entry, name="create_entry")
]
我的条目html:
{% extends "encyclopedia/layout.html" %}
{% block title %}
{{title}}
{% endblock %}
{% block body %}
{{ entry|safe }}
<a role-"button" class="btn btn-primary" href="{% url 'encyclopedia:edit_landing' entry%}" method="POST">Edit</a>
{% endblock %}
我的编辑页面html:
{% extends "encyclopedia/layout.html"%}
{% load crispy_forms_tags%}
{% block title%} Edit Entry {%endblock%}
{% block body %}
<h1>Edit Entry</h1>
<form action= "{% url 'encyclopedia:edit'%}" method="POST">
{% csrf_token %}
<div class="form-group">
{{ form | crispy | safe }}
</div>
<input class="btn btn-primary" type="submit" value="Submit">
</form>
{% endblock %}
您的 URL 模式没有为 edit_landing 定义参数,例如“edit”。因此反向不起作用。