Python Django个性化url

Python Django个性化url,python,django,subdomain,Python,Django,Subdomain,我需要在Django上使用子域(我想)。我在我的项目上有很多“房间”,我需要用房间的名称建立url 示例:如果我有一个名为“microsoft”的文件室,并且我的域是,我希望有一个最终url,如:http://microsoft.toto.fr“走进微软的房间。我可以有几个房间,然后几个不同的网址 这怎么可能呢?Django子域可以这样做吗 谢谢你 关于子域 我认为在你的情况下,子域不需要。您可以通过以下方式很好地处理房间分隔: http://toto.fr/microsoft/ http://

我需要在Django上使用子域(我想)。我在我的项目上有很多“房间”,我需要用房间的名称建立url

示例:如果我有一个名为“microsoft”的文件室,并且我的域是,我希望有一个最终url,如:http://microsoft.toto.fr“走进微软的房间。我可以有几个房间,然后几个不同的网址

这怎么可能呢?Django子域可以这样做吗

谢谢你

关于子域 我认为在你的情况下,子域不需要。您可以通过以下方式很好地处理房间分隔:

http://toto.fr/microsoft/
http://toto.fr/room2/
http://toto.fr/room3/
如果您需要生成这些URL(例如,用户创建新的文件室),则难度将(稍微)增加

使用子域 从Apache、Nginx等重新路由。 这就是我推荐你的方式。

每个服务都有自己的方式,因此您需要发布一个与您将在生产中使用的服务相关的特定问题

---编辑---

这里的想法是让您的
url.py
按照Django的方式工作:

#url.py
从django.url导入路径
从…起导入视图
URL模式=[
路径('microsoft/',views.microsoft),
]
这意味着您将在本地主机上访问如下URL:

https://localhost:8000/microsoft/something
这就是它在幕后的运作方式。但您可以将http服务器(例如Apache)设置为允许用户使用:

https://microsoft.example.com/something
下面是一个配置示例(免责声明我不是这方面的专家,这可能不是正确的语法):


ServerName.microsoft.example.com
重定向永久/http://example.com/microsoft
因此,当您的用户键入
https://microsoft.example.com/something
,Apache知道它必须调用
https://localhost:8000/microsoft/something
内部

---结束编辑---

使用django扩展名
django子域
似乎未处于活动状态

---编辑---

在使用第三方代码之前,如
django子域
,您应该始终检查它是否得到维护。您可以看到它与Django 2和3不兼容(因此与python 3不兼容)。因此,这应该告诉你不要跟着它走

这意味着您需要从没有被积极维护并且存在潜在安全漏洞的组件开始

---结束编辑---

我很快尝试用Django3设置它,并能让它工作


有一个变量声称与Django 3兼容,但看起来也相当不活跃。

您可以使用一个变量处理任意多的房间:

urlpatterns = [
    ...
    path('foo/<str:theroom>/bar/', view_room, name="view-room"),
    ...
]
然后Django将调用您的视图函数

def view_room(request, theroom):
使用
theroom=ubuntu


如果您喜欢定义子域,如,则必须在httpd配置文件中为每个房间定义一个子域,但也要在权威DNS中声明这些子域。这可能很复杂,而且不是一个好主意,因为子域用于指定调用哪个应用程序。

到目前为止,您尝试了什么?暂时没有什么,我尝试了解django子域,以了解它是否对meHello RomainGZ有好处谢谢您的回答!我需要有一个像“不喜欢”这样的url!这是可能的吗?那么你认为django子域的解决方案不是解决我问题的好方案,如果我理解的话!我编辑来回答你关于django子域的问题。我不知道有什么方法可以让子域轻松地使用本机Django URL模式。我的答案是看看如何使用http服务器重定向。我会在我的回答中再详细一点。你对django扩展的权利,他不会被保留,谢谢!例如,非常感谢你的帮助,我理解这个想法,但是。。。如果我创建了15个房间(微软、谷歌、安卓、华硕等),我需要在我的配置中有15个重定向?!每次我创建一个新的文件室时,我都需要更新我的conf:(你是对的,你不应该写15个redirections.Apache(可能还有其他)支持正则表达式。你应该在那里搜索或发布一个问题,因为我无法帮助你,抱歉。快速搜索会产生这种类型的问题,例如:非常感谢Romain!你好,谢谢你的回答。是的,我需要定义为ubuntu.YourAddress这样的子域!好的,我理解。。。
http://youraddress/foo/ubuntu/bar/
def view_room(request, theroom):