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:让用户创建具有个性化网址的网站的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Django 显示用户配置文件? [关闭]

当进一个网站登陆用户的时候怎么让浏览器自动记住我登陆的密码?而不用每次都输入?

苹果向开发人员推出开源项目:让密码管理App创建强密码

Django-限制用户访问网址

Django - 如何为注册站点用户和非站点用户创建模型?

在 Django 中为特定视图设置用户权限