2017-09-14 65 views
1

我正在Django上工作1.11Django中的重定向

我想從視圖中重定向用戶。

內容myapp/accounts/urls.py

app_name = 'accounts' 
urlpatterns = [ 
    url(r'^$', views.ProfileView.as_view(), name='profile'), 
    url(r'^profile/', views.ProfileView.as_view(), name='profile') 
] 

myapp/accounts/views.py

from django.contrib.auth.models import User 

# Create your views here. 
from django.http import HttpResponseRedirect 
from django.urls import reverse 
from django.views.generic import TemplateView, UpdateView 

class ProfileView(TemplateView): 
    template_name = 'accounts/profile.html' 

class UpdateProfile(UpdateView): 
    model = User 
    fields = ['first_name', 'last_name'] 

    template_name = 'accounts/update.html' 

    def get_object(self): 
     return self.request.user 

    def get_success_url(self): 
     messages.success(self.request, 'Profile Updated Successfully') 
     return HttpResponseRedirect(reverse('profile')) 

這是重定向給錯誤。

NoReverseMatch at /accounts/update/ 

Reverse for 'profile' not found. 'profile' is not a valid view function or pattern name. 

如何更新配置文件的詳細信息後,用戶重定向到profile頁?

如何重定向用戶到其他應用程序的看法?

+0

的'url'應該是唯一的名稱,使用的是'name ='profile'' 2網址 – AndMar

+0

我使用的名稱都因爲我想重定向'www.example.com/accounts'和'www.example.com /賬戶/ profile'到相同的視圖。 –

+0

刪除線'網址(R '^ $',views.ProfileView.as_view(),名稱= '個人資料'),',還是同樣的錯誤 –

回答

1

首先,你需要給unique names

urlpatterns = [ 
    url(r'^$', views.ProfileView.as_view(), name='profile'), 
    url(r'^profile/', views.ProfileView.as_view(), name='detailprofile') 
] 

現在

def get_success_url(self): 
    messages.success(self.request, 'Profile Updated Successfully') 
    return reverse('accounts:profile')