我使用的是Django套餐django-subdomain,我认为我没有正确配置它。
现在我正在尝试从数据库加载数据我在终端中收到此错误
主机localhost:8000不属于域example.com,无法识别此请求的子域
我的项目中没有对example.com的任何引用。
这是我的子域名配置:
ROOT_URLCONF = 'creativeflow.urls'
# A dictionary of urlconf module paths, keyed by their subdomain.
SUBDOMAIN_URLCONFS = {
None: ROOT_URLCONF, # no subdomain, e.g. ``example.com``
'www': ROOT_URLCONF,
'blog': ROOT_URLCONF + '.blogs',
}
SITE_ID = 1
中间件:
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'subdomains.middleware.SubdomainURLRoutingMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
我的网址:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^posts/(?P<year>\d{4})/(?P<months>\d{2}|\w{3})/(?P<day>\d{2})',
BlogListView.as_view(paginate_by=25), name="blog-list-view"),
]
我不确定我需要让其使用/开发子域名的其他配置。我需要更改什么才能访问http://localhost:8000/posts/2016/07/09
的BlogListView?或者通过blog.creativeflow.com/posts/2016/07/09
的实际子域更好?我怀疑后者只是对/etc/hosts/
等效的窗口进行了简单的更改。
答案 0 :(得分:2)
SITE = 1
将对应django.contrib.site
设置的默认example.com
。
django.contrib.sites注册一个post_migrate信号处理程序,使用 domain example.com 创建名为 example.com 的默认站点。在Django创建测试数据库之后,也将创建该站点。
这存储在DB中,因此无法在配置中完全设置它。
要在数据库中进行设置,请按照here:
步骤操作>>> from django.contrib.sites.models import Site
>>> one = Site.objects.all()[0]
>>> one.domain = 'myveryspecialdomain.com'
>>> one.name = 'My Special Site Name'
>>> one.save()
然后你可以运行python manage.py dumpdata sites
,它产生你刚刚加载的数据的JSON。然后使用django-admin loaddata fixture [fixture ...]
加载它。否则,您可以通过站点应用程序下的管理界面进行设置。
在修复之前,它将显示为example.org:
更改这些:
这应解决问题。
答案 1 :(得分:1)
为什么要设置SITE_ID = 1
?
来自django.contrib.site
的Django文档:
django.contrib.sites注册了一个post_migrate信号处理程序,该处理程序使用域example.com创建名为example.com的默认站点。在Django创建测试数据库之后,也将创建此站点。
您需要为当前网站指定正确的SITE_ID
。
答案 2 :(得分:-1)
我需要更改什么才能访问BlogListView http://localhost:8000/posts/2016/07/09?或者通过实际更好 blog.creativeflow.com的子域名
我已经设置了我的linode,子域名指向不同的应用和网站。我通过在“emperor”模式下配置NGINX webserver和uWSGI web app守护进程来完成此操作。
要在本地测试django-subdomain,adding subdomains to localhost上的这个问题可能有所帮助。