Django - 如何实现example.com/username url系统 [英] Django - how to implement an example.com/username url system

查看:155
本文介绍了Django - 如何实现example.com/username url系统的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我在想什么是用户登录的时候,他的用户名将是显示在地址栏中。



  • www.example.com/username 1 (用于主页个人资料)

  • www.example.com/username 1 / about /

  • www.example。 com / username 1 / gallery /


p>



  • www.example.com/username 2 (主页个人资料)

  • www.example.com/username 2 / about /

  • www.example.com/username 2 / gallery /


另外如果有人进入地址www。 example.com/username1将显示user1的配置文件。



我已经使用Django-Allauth实现了一个注册/登录系统


mySite /urls.py




  url(r'^ accounts /',include('allauth。 urls')),




home / urls.py




  url(r'^ $',views.index),




home / views.py




pre $ def index(request)

return render_to_response('home / index.html',context_instance = RequestContext(request))

我尝试了一些例子,例如用户配置文件url方案的问题,如django中的example.com/username



但我没有这个工作。我不明白该做什么:(



请给出一些建议。

解决方案

添加以下网址作为最后项目 mySite / urls.py

  urlpatterns = patterns('',
...
url(r'^(?P< username> \w +)/', include('userapp.urls')),

然后$ code> username 参数将被传递给您的 userapp 的视图:



userapp / urls.py

 从userapp导入视图

urlpatterns = patterns('',
url(r'^ $',views.profile,name ='user_profile'),
url(r'^ about / $' about,name ='user_about'),
url(r'^ gallery / $',views.gallery,name ='user_gallery'),

userapp / views.py

  def profile(request,username):
user = get_object_or_404(User,username = username)
return render(request,'userapp / profile.html',{'profile_user':user})

def about(request,username) :
...

def图库(请求,用户名):
...


I am trying to implement on my website a simple and friendly address system.

What i'm thinking about is when the user logged in, his username will be displayed in the address bar.

  • www.example.com/username1 (for home page profile)
  • www.example.com/username1/about/
  • www.example.com/username1/gallery/

  • www.example.com/username2 (for home page profile)
  • www.example.com/username2/about/
  • www.example.com/username2/gallery/

And additionally if anyone enter the address www.example.com/username1, will be shown the profile of user1.

I already implemented a register/Login system using Django-Allauth

mySite/urls.py

url(r'^accounts/', include('allauth.urls')),

home/urls.py

url(r'^$', views.index),

home/views.py

def index(request):

return render_to_response('home/index.html', context_instance=RequestContext(request))

I tried to follow some examples like Facing problem with user profile url scheme like example.com/username in django

But i dont have this thing working yet. I dont understand what to do :(

Please, give some advise.

解决方案

Add the following url as the last item of the mySite/urls.py:

urlpatterns = patterns('',
    ...
    url(r'^(?P<username>\w+)/', include('userapp.urls')),
)

Then the username parameter will be passed to the views of your userapp:

userapp/urls.py:

from userapp import views

urlpatterns = patterns('',
    url(r'^$', views.profile, name='user_profile'),
    url(r'^about/$', views.about, name='user_about'),
    url(r'^gallery/$', views.gallery, name='user_gallery'),
)

userapp/views.py:

def profile(request, username):
    user = get_object_or_404(User, username=username)
    return render(request, 'userapp/profile.html', {'profile_user': user})

def about(request, username):
    ...

def gallery(request, username):
    ...

这篇关于Django - 如何实现example.com/username url系统的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆