我试图允许用户创建类别和帖子(将被标记为某个类别)我认为我编写的代码是正确的,但我收到404错误,No Post匹配给定的查询。 这是我的代码。
this is my form
class CategoryForm(forms.ModelForm):
name = forms.CharField(max_length=128, help_text="aa")
likes = forms.IntegerField(widget=forms.HiddenInput(), initial=0)
slug = forms.CharField(widget=forms.HiddenInput, required=False)
class Meta:
model = Category
fields =('name',)
class PostForm(forms.ModelForm):
title = forms.CharField(max_length=128, help_text="bb")
views = forms.IntegerField(widget=forms.HiddenInput(), initial=0)
class Meta:
model = Post
fields = ['title', 'content', 'image', 'views', 'category']
这是我的观点
#for adding category
def add_category(request):
if request.method == 'POST':
form = CategoryForm(request.POST)
if form.is_valid():
form.save(commit=True)
return index(request)
else:
print form.errors
else:
form = CategoryForm()
return render(request, 'main/add_category.html', {'form':form})
#for adding post/see diff style :)
def add_post(request):
context = RequestContext(request)
if request.method == "POST":
form = PostForm(request.POST, request.FILES)
if form.is_valid():
form.save(commit=True)
return redirect(index)
else:
print form.errors
else:
form = PostForm()
return render_to_response('main/add_post.html', {'form':form}, context)
这是我的网址
url(r'^add_post/', views.add_post, name='add_post'),
url(r'^add_category/$', views.add_category, name='add_category'),
最后我的模板 {
% extends 'base.html' %}
{% block content %}
<form id="post_form" method="post" action="/main/add_post/" enctype="multipart/form-data">
{% csrf_token %}
{{form}}
<input type="submit" name="submit" value="Create Post">
</form>
{% endblock %}
答案 0 :(得分:0)
当您的视图网址为main/add_post/
时,您的模板会将表单发布到add_post/
。你应该让它们保持一致。
答案 1 :(得分:0)
您应该使用action="{% url 'main:add_post' %}"
代替action="/main/add_post/"
。
还要检查项目中的urls.py主应用程序包含的命名空间,如
url(r'^main/', include('main.urls', namespace="main"))
如果您不使用命名空间,请更改为action="{% url 'add_post' %}"
。
如果再次出现错误,请提供更多信息。
您在浏览器中输入哪个ulr才能收到此错误?