Python Django视图不重定向到详细信息页面
我在Django中创建了一个表单和视图。当我转到时,我可以看到“添加新帖子”表单,但在我完成所有必填字段并单击“提交”后,页面会自动刷新,而不会重定向到“帖子详细信息”页面 这是我的观点Python Django视图不重定向到详细信息页面,python,django,django-views,url-redirection,django-urls,Python,Django,Django Views,Url Redirection,Django Urls,我在Django中创建了一个表单和视图。当我转到时,我可以看到“添加新帖子”表单,但在我完成所有必填字段并单击“提交”后,页面会自动刷新,而不会重定向到“帖子详细信息”页面 这是我的观点 def post_new(request): if request.method == "POST": form = PostForm(request.POST, request.FILES) if form.is_valid(): post =
def post_new(request):
if request.method == "POST":
form = PostForm(request.POST, request.FILES)
if form.is_valid():
post = form.save(commit=False)
post.createdAt = timezone.now()
post.writer = request.user
post.save()
return redirect('posts:post_detail', pk=post.pk)
else:
form = PostForm()
context = {'form':form}
return render(request,"posts/post_new.html",context)
以下是我的URL.py:
urlpatterns = [
url(r'^$', views.post_list, name="post_list"),
url(r'^posts/(?P<post_title_slug>[\w\-]+)/$', views.post_detail, name='post_detail'),
url(r'^post/new/$', views.post_new, name='post_new'),
]
这是我的html:
<div class="col">
<form method='POST' class='post_form' enctype='multipart/form-data'>
{% csrf_token %}
{{ form.non_field_errors }}
<div class="form-row">
<div class="form-group col-md-6">
<label for="{{ form.title.id_for_label }}" class="col-form-label">Title</label>
<input type="text" class="form-control" id="{{ form.title.id_for_label }}" name= "{{ form.title.html_name }}" placeholder="Enter post title">
{{ form.title.errors }}
</div>
</div>
<div class="form-group">
<label for="{{ form.comment.id_for_label }}">Description here:</label>
<textarea class="form-control" rows="5" id="{{ form.comment.id_for_label }}" name="{{ form.comment.html_name }}" aria-describedby="descriptionHelpBlock"></textarea>
<small id="descriptionHelpBlock" class="form-text text-muted">
Describe your post in this text box.
</small>
{{ form.comment.errors }}
</div>
<div class="form-group">
<label for="{{ form.image.id_for_label }}">Upload picture here</label>
<input type="file" id="{{ form.image.id_for_label }}" name="{{ form.image.html_name }}" class="form-control-file">
{{ form.image.errors }}
</div>
<br>
<button type="submit" class="btn btn-info">Post</button>
</form>
您的url需要一个slug值作为参数。你需要在重定向中传递文章的标题段塞,而不是pk。 尝试:
我假设你的slug字段是post。slug你的帖子创建时没有问题吗?不幸的是,在db中没有创建帖子。如果没有创建帖子,看起来表单无效。我建议完全打印form.errors以查看有什么错误或遗漏。我已将重定向更改为此,但结果仍然相同。如果您的表单无效。尝试在模板中的任意位置添加{form.errors}},然后再次提交表单。
return redirect('posts:post_detail', post_title_slug=post.slug)