Di fronte a un problema con schema di profilo utente url come example.com/username in Django
-
02-10-2019 - |
Domanda
In un app Django, ho bisogno di creare gli URL di Twitter profilo utente con seguente struttura come:
-
example.com/<username>
-
example.com/<username>/friends
-
example.com/<username>/blog
-
example.com/<username>/some-page
-
example.com/<username>/some-other-page
Il mio 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'),
)
Il mio primo problema è che mentre example.com/<username>
funziona bene example.com/<username>/any-other-page
non lo fa. Tutti finiscono in vista show_profile
diversa dalla propria vista.
Nota: Tutto funziona bene se faccio gli URL cambiano la struttura URL example.com/user/<username>
Che cosa sto facendo male qui? Si prega di avvisare.
In secondo luogo, vorrei orientamenti sulle migliori pratiche Django (trappole, trucchi, ecc) nel trattare con schemi URL in cui prima parte è di per sé è variabile.
Grazie
Soluzione
Non vedo il motivo per cui gli URL non funzionano. Si può provare a spostare il primo modello fino alla fine, in modo che gli altri modelli hanno la possibilità di abbinare prima. Il problema si sta descrivendo suona come example.com/user/any-page
, il modello è la corrispondenza "user / any-page", come il nome dell'account. La regex si mostra non lo farei, ma forse il vostro codice attuale è leggermente diverso?