是否可以通过用户输入自定义settings.py? [英] Make settings.py customizable from user input?

查看:67
本文介绍了是否可以通过用户输入自定义settings.py?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

def save_local_setting_JSON(dest, content):
        fwrite  = open(dest, 'wb')
        dict_json = eval(json.dumps(content))
        string_json =json.dumps(dict(dict_json))
        fwrite.write('EMAIL_DEVELOPMENT='+string_json+"\n")
        fwrite.close()

def config_mail_show(request, template='admin/config_mail.html'):
    form = forms.ConfigMailForm()# for for user input their mail config
    context = {
                'site_host' : settings.SITE_HOST,
                'default_from_email' : settings.DEFAULT_FROM_EMAIL,
                'email_host' : settings.EMAIL_HOST,
                'email_port' : settings.EMAIL_PORT,
                'email_host_user' : settings.EMAIL_HOST_USER,
                'email_host_password' : settings.EMAIL_HOST_PASSWORD,
                'email_use_tls' : settings.EMAIL_USE_TLS,
                'form':form
               }
    if request.method == "POST":
        form = forms.ConfigMailForm(request.method)
        save_local_setting_JSON('local_setting.py', request.POST)   
    return render_to_response(template, context)

local_setting.py将采用以下格式:

local_setting.py will be in this format:

EMAIL_DEVELOPMENT={"email_host_password": "xxxxxx", "site_host": "127.0.0.1:8000", "default_from_email": "xxx xxx <xxx@xxx.xxx>", "email_use_tls": "False", "email_port": "25","email_host_user": "xxx@xxx.xxx", "email_host": "smtp.xxx.xx"}

在settings.py中,我已添加

In settings.py I Added

from local_setting import *
if EMAIL_DEVELOPMENT.has_key('save'):
    SITE_HOST = EMAIL_DEVELOPMENT['site_host']
    DEFAULT_FROM_EMAIL = EMAIL_DEVELOPMENT['default_from_email']
    EMAIL_HOST = EMAIL_DEVELOPMENT['email_host']
    EMAIL_PORT =EMAIL_DEVELOPMENT['email_port']
    EMAIL_HOST_USER = EMAIL_DEVELOPMENT['email_host_user']
    EMAIL_HOST_PASSWORD = EMAIL_DEVELOPMENT['email_host_password']
    EMAIL_USE_TLS = EMAIL_DEVELOPMENT['email_use_tls']
else:# My Development
    SITE_HOST = '127.0.0.1:8000'
    DEFAULT_FROM_EMAIL = 'xxxxx'
    EMAIL_HOST = 'xxxxx'
    EMAIL_PORT = 25
    EMAIL_HOST_USER ='xxxx'
    EMAIL_HOST_PASSWORD = 'xxxxx'
    EMAIL_USE_TLS = False

我不确定使用户界面为用户提供自己的配置(例如邮件)的好方法.

I Am not sure it's good ways to make User Interface that provide user for they own configuration such as Mail.

这里的每个人都可以为此提供一个很好的选择吗?

everyone here Could give the good choice for do this?

推荐答案

settings.py用于网站范围的设置.如果希望每个用户都有自己的设置,请创建一个名为user_settings的模型(当然,FK指向Users模型),并使用它来存储每个用户的设置.

settings.py is for site-wide settings. If you want each user to have their own settings, create a Model called user_settings (with an FK to the Users model of course) and use it to store the per-user settings.

这篇关于是否可以通过用户输入自定义settings.py?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆