مواجهة مشكلة مع نظام URL الخاص بملف تعريف المستخدم مثل example.com/username في Django
-
02-10-2019 - |
سؤال
في تطبيق Django ، أحتاج إلى إنشاء عناوين URL لمستخدم مستخدم Twitter مع بنية التالية مثل:
example.com/<username>
example.com/<username>/friends
example.com/<username>/blog
example.com/<username>/some-page
example.com/<username>/some-other-page
urls.py:
urlpatterns = patterns('profiles.views',
url(r'^(?P<account_name>[a-zA-Z0-0_.-]+)/$', 'show_profile', name='profiles_show_profile'),
url(r'^(?P<account_name>[a-zA-Z0-0_.-]+)/friends/$', 'show_friends', name='profiles_show_blog'),
url(r'^(?P<account_name>[a-zA-Z0-0_.-]+)/blog/$', 'show_blog', name='profiles_show_blog'),
)
مشكلتي الأولى هي ذلك أثناء example.com/<username>
يعمل بشكل جيد example.com/<username>/any-other-page
لا. ينتهي بهم المطاف في show_profile
عرض بدلا من وجهة نظرهم الخاصة.
ملحوظة: كل شيء يعمل بشكل جيد إذا جعلت عناوين URL تغيير بنية عنوان URL إلى example.com/user/<username>
ماذا أفعل خطأ هنا؟ يرجى تقديم النصيحة.
ثانياً ، أود إرشادات حول أفضل الممارسات Django (المزالق ، gotchas ، إلخ) في التعامل مع مخططات URL حيث يكون الجزء الأول هو نفسه متغير.
شكرًا
المحلول
لا أرى لماذا لا تعمل عناوين URL الخاصة بك. يمكنك محاولة نقل النمط الأول إلى النهاية ، بحيث يكون للأنماط الأخرى فرصة للمطابقة أولاً. المشكلة التي تصفها تبدو مثل example.com/user/any-page
, ، يتم مطابقة النمط "المستخدم/أي صفحة" كاسم الحساب. إن regex التي تظهرها لن تفعل ذلك ، ولكن ربما يكون الكود الفعلي مختلفًا قليلاً؟