Django:让用户创建具有个性化网址的网站
Posted
技术标签:
【中文标题】Django:让用户创建具有个性化网址的网站【英文标题】:Django: let users create sites with personalized urls 【发布时间】:2012-10-07 14:04:39 【问题描述】:我正在使用 django,并且在我的 url.py 中有如下网址
url('^mysite/home/$', home),
url('^mysite/listings/$', listings),
现在,我希望用户能够创建自己的帐户,然后拥有自己的网址名称。我在想像 wordpress 之类的东西:
macks_knitting_blog.wordpress.com
但是,以下两个 url 应该都映射到同一个函数,列表。
macks_knitting_blog.mysite.com/listings
my_trip.mysite.com/listings
帐户本质上是相同的,并且所有帐户都将使用相同的功能和模板(与 wordpress 不同)。显示的信息将根据 request.user 进行过滤,模板看起来会根据 request.path 有所不同。
有可能做这样的事情吗?也可以:
mysite.com/macks_knitting_blog/listings
我已经阅读了有关 Django 站点的信息,但在这种情况下似乎并不成立。还是我错过了什么?这个想法是我不需要更改 settings.py 或 url.py 来实现这一点。这一切都应该自动发生。否则,我可以考虑为新站点分配一些 id 并将其传递 - 看起来不是很个性化。
【问题讨论】:
如果你还没有看过blog.uysrc.com/2011/03/23/serving-multiple-sites-with-django 看来这可能正是我需要的!我会阅读并报告。 【参考方案1】:这是一个想法: 在您的 url 部分将列表行更改为
url('^mysite/([^//]*)/listings/$', listings)
你在“views.py”中的函数应该是这样的:
def listings(request, username):
...
return HttpResponse(...)
username 参数在 mysite 和 'listings' 之后的斜杠之间接收字符串段 希望有帮助
【讨论】:
嘿——就是这么简单!我设想每个功能周围都有一个装饰器,以确保站点存在并确保用户与站点匹配。以上是关于Django:让用户创建具有个性化网址的网站的主要内容,如果未能解决你的问题,请参考以下文章