django - डीजेंगो में आधार यूआरएल को फिर से लिखना उपयोगकर्ता के नाम को ऐप नाम के बजाय सभी पृष्ठों के यूआरएल में कैसे जोड़ना है?



python-2.7 url-rewriting (1)

url में यूजरनेम के पास यूजनेम पास कर सकते हैं और request क्लास से यूज़ेन प्राप्त कर सकते हैं:
राय:

def user_page(request, username):
    try:
        user = User.objects.get(username=username)
    except User.DoesNotExists:
        raise Http404
    # or use shortcut get_object_or_404(User, username=username)
    if request.user.username != user.username:
        raise Http404
    return render(request, 'templates/user_template', {'user':user})

यूआरएल:

url(r'^(?<username>\w+)/page/$', views.user_page, name='user_page')

नोट: username फ़ील्ड वैध पसंद नहीं है, यदि यह अनन्य नहीं है, तो जब आप User.objects.get() से अधिक उपयोगकर्ता प्राप्त करेंगे तो यह एक त्रुटि उत्पन्न करेगा। उपयोगकर्ता पृष्ठ देखने के लिए बेहतर उपयोग pk फ़ील्ड

लेकिन अनुरोध उपयोगकर्ता के लिए उपयोगकर्ता पृष्ठ बनाने के लिए सरल तरीका है कीवर्ड तर्क के बिना सिर्फ एक यूआरएल, जो प्रमाणीकृत उपयोगकर्ता के लिए प्रतिक्रिया डेटा:

राय:

def user_page(request):
    user = None
    if request.user.is_authenticated():
        user = User.objects.get(pk=request.user.pk)
    return render(request, 'templates/user_template', {'user': user} )

यूआरएल:

url(r'^page/$', views.user_page, name='user_page')

अब उपयोगकर्ता को प्रमाणित None तो यह अनुरोध उपयोगकर्ता या None आधार पर डेटा वापस आता है

मैं डीजेंगो एप्लीकेशन पर काम कर रहा हूं और मेरे पास नीचे दिए गए आवेदन के आधार यूआरएल हैं:

127.0.0.1:8000/myblog/page

जहां 127.0.0.1:8000 आधार यूआरएल है और myblog ऐप का नाम है और पृष्ठ पृष्ठ का नाम है। तो मेरी आवश्यकता यूआरएल को इस तरह से कुछ करने के लिए बदल देती है, बिना मेरे आवेदन के आंतरिक कोड को बदल दिया है:

127.0.0.1:8000/username/page

असल में मैं यूआरएल में यूज़र नेम के साथ ऐप नाम बदलना चाहता हूं। मैंने इस SO प्रश्न में दिए गए समाधान की कोशिश की है लेकिन इससे ज्यादा मदद नहीं मिली।





url-rewriting