我正在通过标准的Django教程为应用程序创建管理员.在设置中评论管理相关的东西并运行syncdb后,我收到此消息:
DoesNotExist at /admin/ Site matching query does not exist.
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
我正在尝试使用SitesDjango模型.
我不太明白为什么SITE_ID应该这样SITE_ID = 1.
在文档中:
django_site数据库表中当前站点的ID(整数).这样可以使应用程序数据挂钩到特定站点,单个数据库可以管理多个站点的内容.
为什么1?是什么current site?这在文档中没有明确解释.
比方说,我有www.somecoolsite.com和其他一些子域名喜欢www.wow.coolsite.com和www.awesome.coolsite.com
我想根据域名呈现不同的内容.
我的问题是,或更好,是:
SitesDB中的表中?SITE_ID设置?我必须设置像所有的ID SITE_ID = 1,SITE_ID = 2..等等?current site有什么关系SITE_ID = 1?我在这里有点困惑.
我想,每个站点(例如www.wow.coolsite.com)应该是一个单独的django项目,以便他们可以拥有自己的settings.py?在每个settings.py中,我将从Sites表中设置该页面的id?但是有很多django项目对我来说也没有意义.
我正在构建一个Django站点框架,该框架将为几个独立站点提供支持,所有站点都使用相同的应用程序但使用自己的模板.我计划通过使用多个设置文件并为它们设置唯一的SITE_ID来实现这一点,如django.contrib.sites框架的Django文档中所建议的那样
但是,我不希望站点A的用户能够在站点B上登录.在检查syncdb创建的用户表之后,我看不到可能将用户限制到特定站点的列.我还尝试在一个站点上创建一个用户'bob',然后使用shell命令列出另一侧的所有用户,果然,bob显示在那里.
如何确保所有用户都被限制在各自的网站上?
在Django 1.7之前,当使用Django Sites Framework时,可以/应该使用Initial Fixtures定义初始数据.
的myproject /装置/ initial_data.json
Run Code Online (Sandbox Code Playgroud)[ { "pk": 1, "model": "sites.site", "fields": { "domain": "domain1", "name": "name1" } }, { "pk": 2, "model": "sites.site", "fields": { "domain": "domain2", "name": "name2" } }, { "pk": 3, "model": "sites.site", "fields": { "domain": "domain3", "name": "name3" } } ]
由于它是一个全局项目设置,我在项目根目录中添加了一个"fixtures"文件夹,并将其添加到FIXTURE_DIRS.
# Used to search fixture files directories.
# Fixture files are files that provide initial data to be
# inserted in the database. (>python manage.py loaddata) …Run Code Online (Sandbox Code Playgroud) 我试图简单地Site从模板中获取当前解析的电流:
<h3>{{ site.name }}</h3>
Run Code Online (Sandbox Code Playgroud)
不幸的是,这并没有带来任何好处.
有没有办法从模板访问当前网站?
我已经使用Django应用程序了一段时间,Django管理界面工作得很好,除了 "在网站上查看"链接不起作用.每当我尝试使用它时,我会收到一条OperationalError消息:no such table: django_site.我已经对这个问题进行了一些研究,似乎我必须为这个链接设置Django站点框架才能工作,但我确定如何做到这一点.文档讨论了数据库表等,但它没有说明如何实际设置站点.所以我的问题实际上是双重的:
./manage.py syncdb哪些内容以便自动"检测"我想要设置表格?settings.py喜欢SITE_ID = 2 if DEBUG else 1,或将manage.py只检测到我正在调试的网站,而不是做网站架构什么?我想在syncdb之后运行时填充django_site表我怎么能这样做我只有一个站点
Django拥有站点框架,可以通过单个Django安装支持多个网站托管.
编辑(以下是系统的错误假设)
我了解中间件根据请求域的查找/缓存设置settings.SITE_ID值.
EndEdit中
但在本地测试时,我的网址是http://127.0.0.1:8000/,而不是http://my-actual-domain.com/
如何在开发过程中在本地查看我的不同站点?
在多个站点上使用时,是否可以将Django allauth的身份验证方法设置为"email"?
我的目标是允许拥有电子邮件地址bob@example.com的用户在site1.com上创建一个帐户,并在site2.com上创建一个单独的帐户.
为了使用电子邮件身份验证,我需要在设置中将UNIQUE_EMAIL设置为True,但这会阻止已在一个站点中拥有帐户的用户在其他站点中创建帐户.