dans une mini communauté virtuelle, j'ai une fonction profile_view, de sorte que je peux voir le profil de tout utilisateur enregistré. La fonction d'affichage de profil a comme paramètre l'ID de l'utilisateur wich le profil appartient, de sorte que lorsque je veux accéder au profil de l'utilisateur 2 par exemple, je l'appelle comme ça: http://127.0.0.1:8000/accounts/profile_view/2/django nom d'utilisateur dans l'URL, au lieu de l'ID
Mon problème est que Je voudrais avoir le nom d'utilisateur dans l'URL, et PAS l'identifiant. J'essaie de modifier mon code comme suit, mais cela ne fonctionne pas encore. Voici mon code:
Vue:
def profile_view(request, user):
u = User.objects.get(pk=user)
up = UserProfile.objects.get(created_by = u)
cv = UserProfile.objects.filter(created_by = User.objects.get(pk=user))
blog = New.objects.filter(created_by = u)
replies = Reply.objects.filter(reply_to = blog)
vote = Vote.objects.filter(voted=blog)
following = Relations.objects.filter(initiated_by = u)
follower = Relations.objects.filter(follow = u)
return render_to_response('profile/publicProfile.html', {
'vote': vote,
'u':u,
'up':up,
'cv': cv,
'ing': following.order_by('-date_initiated'),
'er': follower.order_by('-date_follow'),
'list':blog.order_by('-date'),
'replies':replies
},
context_instance=RequestContext(request))
et mon url:
urlpatterns = patterns('',
url(r'^profile_view/(?P<user>\d+)/$',
profile_view,
name='profile_view'),
merci à l'avance!
basé sur ce que je vois dans django/contrib/auth/forms.py Je pense que une meilleure regex à utiliser pour saisir le nom d'utilisateur est (? P [\ w. @ + -] +) –
Que faire si nom d'utilisateur est un e-mail et vous ne voulez pas que cette information soit publique? Vous pouvez utiliser le prénom et le nom de l'utilisateur, mais cela pourrait être dupliqué, donc je pense que nous devrions ajouter un ID ou un hash sur l'ID – jobima