2012-03-23 15 views
19

मैंने देखा है कि जब मैं Django पंजीकरण के साथ लॉग इन करता हूं तो यह मुझे accounts/profile/ पर रीडायरेक्ट करता है। डिफ़ॉल्ट रूप से Django पंजीकरण के url.pyaccounts/profile/ को संभाल नहीं करता है, इसलिए मुझे अपना खुद का बनाना होगा।Django पंजीकरण ऐप के साथ Django में खातों/प्रोफ़ाइल पर काम करने के लिए एक अच्छी जगह कहां है?

  1. क्यों प्रवेश करने के बाद, यह accounts/profile/ पर रीडायरेक्ट करता है:

    वास्तव में इस सवाल तीन गुना है? क्या इसे बदलने का कोई तरीका है? पसंदीदा रूप से लॉग इन करने के बाद अधिमानतः मैं Django को लॉगिन पृष्ठ से पहले पृष्ठ पर रीडायरेक्ट करना चाहता हूं।

  2. यदि मैं accounts/profile/ के लिए अपना स्वयं का दृश्य और टेम्पलेट बनाना चाहता हूं, तो मुझे इसे कहां रखना चाहिए? Django के अंतर्निर्मित users (auth_user) को किसी प्रोजेक्ट के अंदर सभी Django ऐप्स के बीच साझा किया गया है, तो क्या मुझे प्रोजेक्ट फ़ोल्डर में view.py रखना चाहिए और ऐप फ़ोल्डर के अंदर नहीं?
  3. या Django profile वास्तव में इस पूरे account/profiles/ चीज़ का ख्याल रखता है? मैंने पहले से ही अपने UserProfile के साथ Django केवर्ग को विस्तारित किया है, लेकिन यह वास्तविक "प्रोफ़ाइल" की तुलना में User तालिका में अतिरिक्त फ़ील्ड की तरह है (मैंने अवतार या ऐसा कुछ भी नहीं बनाया है, केवल पतों और फोन नंबरों जैसे साधारण सामान, लेकिन अधिकांश महत्वपूर्ण बात यह है कि कुछ कस्टम उपयोगकर्ता प्रकार जिन पर मेरा ऐप निर्भर करता है)।

उत्तर

14

क्यों प्रवेश करने के बाद, यह खातों/प्रोफ़ाइल पर रीडायरेक्ट करता है /? क्या इसे बदलने का एक तरीका है? पसंदीदा रूप से लॉग इन करने के बाद अधिमानतः मैं जैसे Django लॉगिन पृष्ठ से पहले पृष्ठ पर रीडायरेक्ट करने के लिए करता हूं।

बस जहां मैं इसे रखना चाहिए तो अगर मैं के लिए खातों/प्रोफ़ाइल/अपने ही देख सकते हैं और खाका बनाने के लिए थे LOGIN_REDIRECT_URL

सेटिंग बदलने, ? Django के अंतर्निर्मित उपयोगकर्ता (auth_user) किसी प्रोजेक्ट के अंदर सभी Django ऐप्स के बीच साझा किया गया है, तो क्या मुझे प्रोजेक्ट फ़ोल्डर में view.py और ऐप फ़ोल्डर के अंदर नहीं रखना चाहिए?

मुझे प्रत्येक प्रोजेक्ट में "project_specific" नामक ऐप बनाना पसंद है। यही वह जगह है जहां मैंने उन सभी चीजों को रखा जो कि पुन: प्रयोज्य नहीं हैं और जोड़े कई ऐप्स हैं।

आप प्रोजेक्ट स्तर पर view.py भी बना सकते हैं, लेकिन यह एक परियोजना विशिष्ट ऐप बनाने की तुलना में गन्दा प्रकार है।

असल में इससे कोई फर्क नहीं पड़ता कि आपने इसे कहां रखा है।

या Django प्रोफाइल वास्तव में इस पूरे खाते/प्रोफाइल/चीज़ का ख्याल रखता है? मैंने पहले से ही अपने प्रोफाइल यूजर प्रोफाइल के साथ के साथ Django की उपयोगकर्ता कक्षा को विस्तारित किया है, लेकिन यह वास्तविक "प्रोफ़ाइल" की तुलना में उपयोगकर्ता तालिका में अतिरिक्त फ़ील्ड की तरह है (मैंने अवतार या कुछ भी नहीं बनाया है, बस पतों और फोन नंबरों जैसे साधारण सामान , लेकिन सबसे महत्वपूर्ण बात यह है कि कुछ कस्टम उपयोगकर्ता प्रकार जिन पर मेरा ऐप निर्भर करता है)।

अतिरिक्त उपयोगकर्ता फ़ील्ड जोड़ने का तरीका नहीं है।मैं अनुशंसा करता हूं कि आप Storing additional information about users पर दस्तावेज़ पढ़ें। सेटिंग्स में

6

एक न्यूनतम दृष्टिकोण है कि स्टैंडअलोन ऐप्स की आवश्यकता नहीं है के लिए,

  1. एक टेम्पलेट बनाएँ और इसे कहते profile.html या आप चाहते हैं कि कुछ भी।

    <p>This is your profile, {{ user.username }}.</p> 
    
  2. urls.py में, एक यूआरएल ढांचा नहीं है कि आपकी प्रोफ़ाइल टेम्पलेट के लिए अंक जोड़ने के लिए, यह login_required चिह्नित करें, और यूआरएल एक नाम देना:

    # ... 
    
    from django.views.generic import TemplateView 
    from django.contrib.auth.decorators import login_required 
    
    urlpatterns = [ 
        # ... 
        url(r'^accounts/profile/$', TemplateView.as_view(template_name='profile.html'), name='user_profile'), 
        # ... 
    ] 
    
  3. settings.py, निम्नलिखित पंक्ति जोड़ें:

    LOGIN_REDIRECT_URL = 'user_profile' 
    

इस लाइन Đăng बताता है ओ लॉगिन के बाद उपयोगकर्ता को रीडायरेक्ट करते समय नाम से एक रिवर्स यूआरएल लुकअप करने के लिए। इस लाइन के बिना, आपका ऐप अभी भी काम करेगा लेकिन यह नाजुक होगा क्योंकि यह एक मनमानी हार्ड-कोडित यूआरएल पर निर्भर करता है जिसे पूरी तरह से Django द्वारा कॉन्फ़िगर किया गया है। इस लाइन के साथ, यदि आप या कोई अन्य निर्णय लेता है कि उपयोगकर्ता प्रोफाइल /me/ पर होना चाहिए, तो आप अपने ऐप को तोड़ने के बिना चरण 2 में यूआरएल बदल सकते हैं।

संबंधित मुद्दे