2016-08-12 78 views
0

here is screenshot error 我不明白为什么我在点击详细信息页面中的添加照片按钮后出现错误,但如果我键入url它工作正常,但提交后我想返回到详细信息页面,但它给了我这个错误 我views.pypython webframework django noreversematch

from django.views import generic 
from django.views.generic.edit import CreateView, UpdateView, DeleteView 
from django.core.urlresolvers import reverse_lazy 
from .models import Category, Photo 

class IndexView(generic.ListView): 
    template_name='gallery/index.html' 
    context_object_name='cat' 
    def get_queryset(self): 
     return Category.objects.all() 



class DetailView(generic.DetailView): 
    model=Category 
    template_name='gallery/detail.html' 
    context_object_name='cater' 



class CategoryCreate(CreateView): 
    model=Category 
    fields=['Category_title','artist','Category_logo'] 

我urls.py

from django.conf.urls import url 
from . import views 
app_name='gallery' 
urlpatterns=[ 

    url(r'^$',views.IndexView.as_view(),name='index'), 
    url(r'^(?P<pk>[0-9]+)/$',views.DetailView.as_view(),name='detail'), 

    #adding photo to category 
    url(r'(?P<pk>[0-9]+)/add/$',views.PhotoCreate.as_view(),name='add-  photo'), 
    url(r'category/add/$',views.CategoryCreate.as_view(),name='add-category'), 

    url(r'category/(?P<pk>[0- 9 ]+)/$',views.CategoryUpdate.as_view(),name='update-category'), 

]

我的models.py

from django.db import models 
from django.core.urlresolvers import reverse 
# Create your models here. 
class Category(models.Model): 
    Category_title=models.CharField(max_length=200) 
    artist=models.CharField(max_length=200) 
    Category_logo=models.FileField() 
    # returns to details page after submitting category form 
    def get_absolute_url(self): 
     return reverse('gallery:detail',kwargs={'pk':self.pk})  

    def __str__(self): 
     return self.Category_title + '-' +self.artist 

class Photo(models.Model): 
    cat=models.ForeignKey(Category,on_delete=models.CASCADE) 
    file_type=models.FileField() 
    photo_title=models.CharField(max_length=100) 
    # returns to details page after submitting photo form 
    def get_absolute_url(self): 
     return reverse('gallery:add-photo',kwargs={'pk':self.pk})  


    def __str__(self): 
     return self.photo_title 
+2

的[什么是NoReverseMatc可能的复制H误差,如何解决呢?(http://stackoverflow.com/questions/38390177/what-is-a-noreversematch-error-and-how-do-i-fix-it) – e4c5

+0

是这些空间实际存在于你的网址?只是想知道 –

+0

显示模板,你显示按钮的部分 – pleasedontbelong

回答

1

问题是你没有通过模板中的pk。从截图,如果你看一下在模板高亮线很明显,你的网址却丢失了所需要的关键字参数...

同样是在错误页面的第一行还提到(与关键字ARGS {})

只要提到它的网址名称后,它应该工作

{% url 'gallery:add-photo' photo.pk %} 

,或者您也可以做

{{ photo.get_absolute_url }}