1

我得到這個錯誤在/作者基於NoReverseMatch Django的類視圖

NoReverseMatch /添加/ 4

反轉爲 'author_update' 與參數 '()' 和關鍵字參數 '{' PK':39, 'user_id':>}'找不到。 1個圖案(多個)嘗試:[ '作者/(ΔP\ d +)/(ΔP\ d +)$']

urls.py

 url(r'^author/add/(?P<user_id>\d+)$', AuthorCreate.as_view(), name='author_add'), 
    url(r'^author/(?P<user_id>\d+)/(?P<pk>\d+)$', AuthorUpdate.as_view(), name='author_update'), 
    url(r'^author/(?P<user_id>\d+)/(?P<pk>\d+)/delete/$', AuthorDelete.as_view(), name='author_delete'), 
    url(r'^author/list/(?P<user_id>\d+)$', AuthorList.as_view(), name='author_list'), 

models.py

class Author(models.Model): 
     subject = models.CharField(max_length=100) 
     firstName = models.CharField(max_length=100) 
     lastName = models.CharField(max_length=100) 
     email = models.EmailField() 
     message = models.TextField() 
     created_by = models.ForeignKey(User) 

     def get_absolute_url(self): 
      return reverse('author_update', kwargs={'pk': self.pk, 'user_id': self.created_by}) 

views.py

class AuthorCreate(LoginRequiredMixin, CreateView): 
    model = Author 
    fields = ['subject', 'firstName', 'lastName', 'email', 'message',] 
    template_name = 'authorCreate.html' 

    def form_valid(self, form): 
     form.instance.created_by = self.request.user 
     return super(AuthorCreate, self).form_valid(form) 

class AuthorList(LoginRequiredMixin, ListView): 
    template_name = 'authorList.html' 
    queryset = Author.objects.all() 

    def get_context_data(self, **kwargs): 
     context = super(AuthorList, self).get_context_data(**kwargs) 
     if int(self.kwargs['user_id']) != self.request.user.id: 
      raise PermissionDenied 
     return context 

終端誤差

Internal Server Error: /author/add/4 
Traceback (most recent call last): 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 114, in get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/views/generic/base.py", line 69, in view 
    return self.dispatch(request, *args, **kwargs) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/utils/decorators.py", line 29, in _wrapper 
    return bound_func(*args, **kwargs) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 22, in _wrapped_view 
    return view_func(request, *args, **kwargs) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/utils/decorators.py", line 25, in bound_func 
    return func(self, *args2, **kwargs2) 
    File "/home/ronald/best/A2/0124/vort/larb/views.py", line 52, in dispatch 
    return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/views/generic/base.py", line 87, in dispatch 
    return handler(request, *args, **kwargs) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 205, in post 
    return super(BaseCreateView, self).post(request, *args, **kwargs) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 171, in post 
    return self.form_valid(form) 
    File "/home/ronald/best/A2/0124/vort/larb/views.py", line 83, in form_valid 
    return super(AuthorCreate, self).form_valid(form) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 148, in form_valid 
    return super(ModelFormMixin, self).form_valid(form) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 78, in form_valid 
    return HttpResponseRedirect(self.get_success_url()) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 136, in get_success_url 
    url = self.object.get_absolute_url() 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/utils/functional.py", line 15, in _curried 
    return _curried_func(*(args + moreargs), **dict(kwargs, **morekwargs)) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/db/models/base.py", line 1009, in get_absolute_url 
    return settings.ABSOLUTE_URL_OVERRIDES.get('%s.%s' % (opts.app_label, opts.model_name), func)(self, *args, **kwargs) 
    File "/home/ronald/best/A2/0124/vort/larb/models.py", line 59, in get_absolute_url 
    return reverse('author_update', kwargs={'pk': self.pk, 'user_id': self.created_by}) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 509, in reverse 
    return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) 
    File "/home/ronald/best/A2/0124/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 429, in _reverse_with_prefix 
    (lookup_view_s, args, kwargs, len(patterns), patterns)) 
NoReverseMatch: Reverse for 'author_update' with arguments '()' and keyword arguments '{'pk': 39, 'user_id': <SimpleLazyObject: <User: fdf>>}' not found. 1 pattern(s) tried: ['author/(?P<user_id>\\d+)/(?P<pk>\\d+)$'] 

回答

0

嘗試此行return reverse('author_update', kwargs={'pk': self.pk, 'user_id': self.created_by})更改爲:

return reverse('author_update', args=(self.pk, self.created_by.pk)) 

return reverse('author_update', 
       kwargs={'pk': self.pk, 'user_id': self.created_by.pk}) 
+0

這是我得到了什麼。 NoReverseMatch在關於 'author_update' 與參數 '(>,42)'/作者/添加/ 4 反向和關鍵字參數 '{}' 未找到。 1種模式(S)嘗試:[ '作者/(P \\ d +)/(P \\ d +)$'] – user2387135

+0

@ user2387135兩個參數應該是數字,檢查更新 – ndpu

+0

謝謝!這個偉大的工作回報反向( 'author_update', kwargs = { 'PK':self.pk, 'USER_ID':self.created_by.pk}) – user2387135