2017-04-03 93 views
0

我試圖編輯配置文件,但出現此錯誤 「DoesNotExist at/blog/edit /,用戶匹配的查詢不存在。」編輯配置文件用戶Django

def Profil(request, username): 
    if request.user.is_authenticated(): 
     base_template_name = 'blog/base.html' 
    else: 
     base_template_name = 'blog/visitor.html' 
    user = User.objects.get(username=username) 
    logged_in_user_posts = Post.objects.filter(user=user) 
    context = {'base_template_name':base_template_name} 
    return render(request, 'blog/profil.html', {'user':user, 'posts':logged_in_user_posts}) 



def update_profile(request): 
    if request.method == 'POST': 
     profile_form = ProfileForm(request.POST, request.FILES, instance=request.user.profile) 
     if profile_form.is_valid(): 
      profile_form.save() 
      messages.success(request, ('Your profile was successfully updated!')) 
      return redirect('blog:index') 
     else: 
      messages.error(request, ('Please correct the error below.')) 
    else: 
     profile_form = ProfileForm(instance=request.user.profile) 
    return render(request, 'blog/edit_profile.html', { 
     'profile_form': profile_form }) 

在urls.py:

url(r'^(?P<username>\w+)/$', views.Profil, name = 'profil'), 
url(r'^edit/$', views.update_profile, name='edit_profile'), 

回答

0

這個錯誤來自user = User.objects.get(username=username)線。 get()函數只給出1個匹配,如果沒有任何匹配,則拋出DoesNotExist錯誤。爲了解決您將需要使用try問題 - 不同的是:

try: 
    user = User.objects.get(username=username) 
except User.DoesNotExist: 
    # There is no such user, throw 404 or do anything else 
+0

理解,但是,如果我要來試圖編輯我的個人資料,這樣我是指用戶exsist用戶! – Imed

+0

打印您的用戶名並檢查它是否與控制檯(runserver)輸出中的用戶用戶名匹配。同時打印將顯示您的用戶名的'request.user.username'。要檢查匹配,你可以檢查'username == request.user.username'的輸出。 –

+0

事實上,它與用戶的用戶名相匹配,即使我通過user = User.objects.get(username = request.user.username)更改了「user = User.objects.get(username = username)」,我仍然無法編輯配置文件:/ – Imed