2014-11-16 41 views
0

訪問一個用戶查看網頁時,我收到以下錯誤:爲什麼我在view.py中的查詢給我一個TypeError?

TypeError at /reviews/ben/ 
show_reviews() got an unexpected keyword argument 'username' 

然而,當我運行相同的查詢(即; B = UserReview.objects.all,打印二)在Django控制檯,一切印刷品我可以看到所有已發佈的評論。我不確定我是否在show_reviews()方法中犯了一個簡單的錯誤,或者如果問題比這個更深入。這是我的代碼。

models.py
class UserReview(models.Model): 
    name= models.ForeignKey(User, related_name='usersbeingreviewed', null=True, blank=True) 
    author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='reviewauthors') 
    pub_date=models.DateTimeField(auto_now_add=True) 
    stars = models.IntegerField(max_length=5) 
    comment = models.CharField(max_length=100) 

    def __str__(self): 
     return u'%s %s %s %s %s' % (self.name, self.author, self.pub_date, self.stars, self.comment) 

urls.py
urlpatterns = patterns('', 

    url(r"^reviewseller/(?P<test>\w+)/$", get_review), 
    url(r"^reviews/(?P<username>\w+)/$", show_reviews)) 

views.py
def get_review(request, test): 
    if request.method == 'POST': 
     p = UserReviewForm(request.POST) 
     testname = User.objects.get(username=test) 
     if p.is_valid(): 
      reviewform=p.save(commit=False) 
      reviewform.name=testname 
      reviewform.author=request.user 
      reviewform.save() 
      return HttpResponseRedirect('/thanks/') 

def show_reviews(request): 
    latest_reviews = UserReview.objects.all() 
    context1 = {'latest_reviews': latest_reviews} 
    return render(request, 'reviews.html', context1) 

forms.py
class UserReviewForm(ModelForm): 
    class Meta: 
     model = UserReview 
     fields = ['stars', 'comment'] 
     widgets = { 
     'comment': Textarea, 
     'stars': RadioSelect(choices=[ 
      (1, 'Very poor'), 
      (2, 'Poor'), 
      (3, 'Satisfactory'), 
      (4, 'Great'), 
      (5, 'Excellent') 
      ]) 
     } 

我之前遇到另一個問題,其中ReviewSeller表單是保存用戶名字符串而不是用戶實例,因此我不知道這些是否是相關問題?

回答

1

根據配置的網址:

url(r"^reviews/(?P<username>\w+)/$", show_reviews) 

您捕獲從URL username。您認爲應該有它作爲一個參數:

def show_reviews(request, username): 
    ... 
+1

(或從URL中刪除它,因爲它不是在視圖中使用。) –

+0

@DanielRoseman是啊,我不知道是什麼OP試圖實現。謝謝。 – alecxe

+0

哦,我認爲應該把latest_reviews = UserReview.objects.get(用戶名=用戶名) – stephan

相關問題