Python 运行Django’;时自动提示更新默认站点域名;s./manage.py syncdb?

Python 运行Django’;时自动提示更新默认站点域名;s./manage.py syncdb?,python,django,django-sites,Python,Django,Django Sites,关于Django站点模块和manage.py syncdb 身份验证模块可以在。\manage.py syncdb期间提示请求管理员站点的默认超级用户。我想看到类似的事情发生在默认的网站域名。目前它是example.com,硬编码,除非我使用管理员网站来更改它。我想在syncdb期间更改它。您可以自己执行此操作: 创建管理命令以提示输入新站点 将其连接到post\u syncdb信号 该命令将允许您从命令行方便地设置站点。将其连接到信号将意味着每当安装站点应用程序时,您都会收到提示。例如: fr

关于Django站点模块和manage.py syncdb


身份验证模块可以在。\manage.py syncdb期间提示请求管理员站点的默认超级用户。我想看到类似的事情发生在默认的网站域名。目前它是example.com,硬编码,除非我使用管理员网站来更改它。我想在syncdb期间更改它。

您可以自己执行此操作:

  • 创建管理命令以提示输入新站点
  • 将其连接到
    post\u syncdb
    信号
  • 该命令将允许您从命令行方便地设置站点。将其连接到信号将意味着每当安装
    站点
    应用程序时,您都会收到提示。例如:

    from django.contrib.sites import models as sites_app
    signals.post_syncdb.connect(create_site, sender=sites_app)
    
    编写
    create\u site
    函数(信号处理器)时,您可以几乎准确地复制
    auth
    模块的方法:

    def create_site(app, created_models, verbosity, **kwargs):
    from django.contrib.sites.models import Site
    from django.core.management import call_command
    if Site in created_models and kwargs.get('interactive', True):
        msg = "\nYou just installed Django's sites system, which means you don't have " \
                "any sites defined.\nWould you like to create one now? (yes/no): "
        confirm = raw_input(msg)
        while 1:
            if confirm not in ('yes', 'no'):
                confirm = raw_input('Please enter either "yes" or "no": ')
                continue
            if confirm == 'yes':
                call_command("createsite", interactive=True)
            break
    
    现在您只需要创建管理命令
    createsite
    ,就完成了。我真想知道为什么Django中还没有这个,我讨厌example.com


    把所有这些都放到一个小应用程序中,并在你做的每个项目中重复使用它。如果你将应用程序发布到谷歌代码或django的bug跟踪器之类的地方,你将获得额外的积分。

    我制作了一个小的django应用程序,可以插入并播放。要插入它,请执行以下操作:

  • 将其下载到项目目录或项目可以找到的位置
  • 在your settings.py INSTALLED_APPS中,在其所依赖的“django.contrib.sites”末尾或之后添加“site_default”(应用程序名称)
  • 运行
    manage.py syncdb
    manage.py createdefaultsite
  • 屏幕截图:

    (pinax-dev)>manage.py createdefaultsite
    Site domain name: mydomain.com
    Site display name: My Site!
    (pinax-dev)
    
    它附带一个单元测试。 要运行单元测试,请执行以下操作:

    (pinax-dev)>manage.py test site_default
    
    “site_default”是应用程序名称

    源代码:

    更多截图:

    (pinax-dev)> manage.py syncdb
    Creating table...
    You just installed Django's auth system, which means you don't have any superuse
    rs defined.
    Would you like to create one now? (yes/no): yes
    Username: administrator
    E-mail address: who@who.com
    Password:
    Password (again):
    Superuser created successfully.
    
    Would you like to change the default site domain name? (yes/no)[default:no]: yes
    
    Site domain name: mydomain.com
    Site display name: My Site!
    ...
    Installing index for signup_codes.SignupCode model
    Installing index for signup_codes.SignupCodeResult model