Chr*_*lor 35 django subdomain pinax
我正在使用Django和Pinax开始一个新的Web应用程序项目.我希望能够为我的用户提供像Wordpress和其他网站这样的独特域名:username.wordpress.com.我不知道如何使用Django来处理这个问题,因为url解析逻辑(在urls.py中)以域名后的url开头.
更具体地说,将有多组用户,每组具有唯一的名称.不确定这有什么不同,但我想我应该提一下.
有没有办法我可以操纵http请求,以便URL看起来像Django,好像网址是这样的www.domain.com/groupname,但仍然在浏览器地址栏中显示为groupname.domain.com?
Sov*_*iut 24
您可以使用一些自定义中间件来拦截请求并从中获取子域.以下代码将检索子域并通过反转命名的url重定向到视图.
将它放在应用程序的middleware.py文件中.
确保在settings.py文件中设置中间件.
确保您已在urls.py中命名您的视图
middleware.py
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
import re
subdomain_pattern = re.compile('(?P<subdomain>.*?)\..*?')
class SubdomainMiddleware(object):
def process_request(self, request):
match = subdomain_pattern.match(request.get_host())
subdomain = match.group('subdomain')
redirect_url = reverse('groups_detail', args=[subdomain])
return HttpResponseRedirect(redirect_url)
Run Code Online (Sandbox Code Playgroud)
urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
url(r'^groups/(?P<name>.+)/$', 'groups.views.detail', {}, name='group_detail'),
)
Run Code Online (Sandbox Code Playgroud)
注意:此代码未经测试.
重定向可以改变URL的外观.如果要避免这种情况,只需调用关联的视图,捕获其结果,然后将其返回HttpResponse().
| 归档时间: |
|
| 查看次数: |
3509 次 |
| 最近记录: |