从sqlite切换到本地dev db的postgres后,我无法为我的应用程序运行迁移.
我试过的一些修复和方法尚未解决(例如:Django:关系"django_site"不存在).
python:3.6.3
Django版本:1.11.9
psql(PostgreSQL):10.1
安装的应用:
DJANGO_APPS = (
# Default Django apps:
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.gis',
'django.contrib.humanize',
'django.contrib.admin',
)
THIRD_PARTY_APPS = (
'widget_tweaks',
'mptt',
'channels',
'honeypot',
'gunicorn',
'djangosecure',
# Allauth
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.facebook',
)
LOCAL_APPS = (
'users.apps.UsersConfig', #because of a signal
'common',
'geo',
'community',
'objects',
)
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
Run Code Online (Sandbox Code Playgroud)
在.env文件中:
SITE_ID=1
Run Code Online (Sandbox Code Playgroud)
我试过的解决方案:
清除所有迁移和迁移文件并运行:
$ ./manage.py makemigrations
然后我尝试了以django.contrib开头的应用程序的顺序和手动迁移,例如:
$ ./manage.py migrate sites (第一)
然后应用其他迁移.但无论我如何订购应用程序迁移都不会改变错误或允许迁移完成.
我也尝试过迁移--fake-initial.
它看起来像是在创建站点模型之前调用站点对象. …
关于Django Sites模块和manage.py syncdb
在.\ manage.py syncdb期间,Auth模块可以提示要求管理站点的默认超级用户.我想看到默认站点域名发生类似的事情.目前它是example.com,硬编码除非我使用管理员网站进行更改.我想在syncdb期间更改它.
我有同一个客户端的多个站点,在同一台服务器上运行django,例如fooplumbing.com和bazheating.org.这两个网站每个都有不同的django应用程序,即管道网站不应该能够访问加热应用程序,反之亦然.这两个站点之间没有共享对象,每个站点都需要自己独立的管理站点.
这可能是通过类似于站点框架的东西,还是我需要有两个运行站点的单独的apache实例?(是的,我需要使用apache - 没有选择)
它是一个Linux服务器,有没有一些聪明的方法来使用符号链接来做到这一点?我对基本的django开发很有经验,但在服务器管理方面我没有任何线索.
我非常喜欢使用网站框架来实现跨多个网站的应用程序功能.有没有办法Site在数据库的对象上添加字段,还是应该创建一个外键一对一的关系?
我想在django中获取服务器URL.所以我经历了stackoverflow并发现为了做到这一点,我将不得不做以下事情:
>>> from django.contrib.sites.models import Site
>>> mysite = Site.objects.get_current()
Run Code Online (Sandbox Code Playgroud)
我python manage.py shell在生产服务器上尝试了上面的内容,并期望mysite给我生产服务器的URL,但它给了example.com
>>> mysite
<Site: example.com>
Run Code Online (Sandbox Code Playgroud)
我错过了一些配置吗?
我想实现django站点地图,但我对于将sitemaps.py文件放在哪里以及应该修改哪个urls.py文件以包括:
url(r'^sitemap.xml$', 'django.contrib.sitemaps.views.index', {'sitemaps': sitemaps}),
Run Code Online (Sandbox Code Playgroud)
我应该将上面的行放在project(mysite)urls.py文件或app(sampleapp1)urls.py文件中吗?
根据 Django 文档(此处):
django.contrib.sites 注册一个 post_migrate 信号处理程序,该处理程序使用域 example.com 创建一个名为 example.com 的默认站点。该站点也将在 Django 创建测试数据库后创建。要为您的项目设置正确的名称和域,您可以使用数据迁移。
直接从 Django 管理面板更改默认值不是安全吗?为什么?