没有帖子匹配给定的查询,允许用户发帖(django)

时间:2015-11-27 02:06:41

标签: django

我试图允许用户创建类别和帖子(将被标记为某个类别)我认为我编写的代码是正确的,但我收到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 %}

2 个答案:

答案 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才能收到此错误?