我正在尝试通过一种非常简单的形式来构建一个具有基本发布功能的简单博客。我要完成的功能是:
如果新的POST POST(无错误等)保存到数据库并重定向到新创建的post_details页面。否则,我希望它再次重新呈现发布表格。我在/ post / pk不断收到错误NoReverseMatch,但找不到我的错误。我显然无法正确理解某些内容。相关代码如下:
views.py
def post_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm()
return render(request, 'blog/post_edit.html', {'form': form})
post_edit.html
{% extends 'blog/base.html' %}
{% block content %}
<h2>New post</h2>
<form method="POST" class="post-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Save</button>
</form>
{% endblock %}
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('post/<int:pk>/', views.post_detail, name='post_detail'),
path('post/new/', views.post_new, name='post_new'),
]
答案 0 :(得分:0)
我在模板视图post_detail.html中的链接内发现了我的错误:
<a class="btn btn-default" href="{% url 'post_edit' pk=post.pk %}"><span class="glyphicon glyphicon-pencil"></span></a>
它已正确重定向到post_detail.html,但上面的链接破坏了我的页面。