2015-11-27 2 views
0

Я пытаюсь разрешить пользователям создавать категории и сообщения (которые будут помечены в какую-либо категорию) Я думаю, что я правильно написал код, m получает ошибку 404, когда сообщение «Нет» соответствует заданному запросу. Вот мой код.Нет сообщений соответствует заданному запросу, позволяя пользователям делать сообщения (django)

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

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

Вы должны использовать action="{% url 'main:add_post' %}" вместо action="/main/add_post/". Также проверьте, что в ваших проектах-х urls.py URLs основного приложения в комплекте с пространством имен, как

url(r'^main/', include('main.urls', namespace="main")) 

Если вы не используете пространство имен, чем изменения в action="{% url 'add_post' %}". Если ошибка повторяется, предоставьте дополнительную информацию. Какой ульр вы точно вводите в браузере, чтобы получить эту ошибку?

0

Ваш шаблон делает форму сообщения main/add_post/, пока ваш URL-адрес для просмотра: add_post/. Вы должны сделать их последовательными.

+0

Извините, я не уверен, что вы говорите. так что я должен что-то изменить? –

+0

Вы должны изменить этот 'url (r '^ add_post /', views.add_post, name = 'add_post')' to 'url (r '^ main/add_post/$', views.add_post, name = 'add_post') ' – sunhs

+0

Я ценю, что вы пытаетесь помочь, но нет, это не так, я использую Django. –