2013-05-29 9 views
8

मैं एक Django एप्लिकेशन पर काम कर रहा हूं जिसमें दो प्रकार के उपयोगकर्ता होंगे: व्यवस्थापक और उपयोगकर्ता। दोनों मेरे प्रोजेक्ट में समूह हैं, और इस समूह के आधार पर कि किस समूह में व्यक्तिगत लॉगिंग है, मैं उन्हें अलग-अलग पृष्ठों पर रीडायरेक्ट करना चाहता हूं। अभी मैंDjango - सशर्त लॉगिन रीडायरेक्ट

LOGIN_REDIRECT_URL = 'admin_list' 

यह सभी उपयोगकर्ताओं को, जो 'admin_list' में साइन इन पुनर्निर्देश, लेकिन दृश्य केवल व्यवस्थापक समूह के सदस्यों के लिए सुलभ है मेरी settings.py में यह है - अन्यथा यह रिटर्न एक 403 के रूप में लॉगिन दृश्य के लिए, मैं सिर्फ एक Django प्रदान कर रहा हूँ। मैं अपने मुख्य urls.py फ़ाइल को यह जोड़ दिया है इन विचारों का उपयोग करें:

url(r'^accounts/', include('django.contrib.auth.urls')), 

मैं इतना है कि व्यवस्थापक केवल समूह के सदस्य इस दृश्य को अनुप्रेषित हैं इस लिए कर सकते हैं कैसे और अन्य सभी लोग एक पर भेज दिया जाएगा अलग दृश्य?

+0

क्या आप अपना खुद का लॉगिन व्यू या Django के जेनेरिक एक का उपयोग कर रहे हैं? यदि आपका खुद का विचार है, तो हमें दृश्य दिखाएं। –

+1

मैं Django के सामान्य लॉगिन दृश्य का उपयोग कर रहा हूं, बस इसे अपने मुख्य urls.py url (r '^ accounts /' में शामिल करता हूं, ('django.contrib.auth.urls')), –

+2

उस जानकारी के साथ प्रश्न अपडेट करें । यदि आप इसे डीबग करने के लिए आवश्यक सभी जानकारी नहीं देते हैं तो कोई भी आपकी मदद नहीं कर सकता है। –

उत्तर

16

एक अलग दृश्य बनाएं जो उपयोगकर्ता के आधार पर व्यवस्थापक समूह में रीडायरेक्ट करता है या नहीं।

from django.shortcuts import redirect 

def login_success(request): 
    """ 
    Redirects users based on whether they are in the admins group 
    """ 
    if request.user.groups.filter(name="admins").exists(): 
     # user is an admin 
     return redirect("admin_list") 
    else: 
     return redirect("other_view") 

अपने urls.py करने के लिए दृश्य जोड़ें,

url(r'login_success/$', views.login_success, name='login_success') 

फिर अपने LOGIN_REDIRECT_URL की स्थापना के लिए इसका इस्तेमाल करते हैं। ध्यान में रखते हुए तो

(r'^wherenext/$', views.where_next), 

:

LOGIN_REDIRECT_URL = "/wherenext/" 
फिर मेरे urls.py में

:

LOGIN_REDIRECT_URL = 'login_success' 
+2

मैंने निम्नलिखित को myapp/urls.py में जोड़ा और यह पूरी तरह से काम किया! यूआरएल (r'login_success/$ ', views.login_success, name =' login_success '), –

3

मैं एक ही बात को पूरा करने के लिए एक मध्यवर्ती दृश्य का उपयोग

@login_required 
def wherenext(request): 
    """Simple redirector to figure out where the user goes next.""" 
    if request.user.is_staff: 
     return HttpResponseRedirect(reverse('admin-home')) 
    else: 
     return HttpResponseRedirect(reverse('user-home')) 
संबंधित मुद्दे