gpt4 book ai didi

python - Django 应用程序安装脚本 - 如何将应用程序添加到 INSTALLED_APPS 设置?

转载 作者:行者123 更新时间:2023-12-02 07:32:21 27 4
gpt4 key购买 nike

我已经编写了一个 Django 应用程序,现在我希望能够轻松地在多个服务器上部署。

基本安装是:

  1. 将应用程序文件夹复制到 Django 项目文件夹中
  2. 将其添加到 settings.py 中的 INSTALLED_APPS
  3. 运行./manage.pycollectstatic

这个特定的应用程序不需要使用数据库,但如果需要,我会使用 South 并运行 ./manage.py migrate,但那是另一个故事了。

我遇到问题的部分是#2。我不想每次都手动编辑这个文件。更新最简单/最可靠的方法是什么?

我想我可以使用 inspect 模块来查找变量,然后以某种方式附加它,但我没有任何运气。 inspect.getsourcelines 找不到变量。

最佳答案

您可以使用 bash 修改 settings.py。

#set $SETTINGS_FILE variable to full path of the your django project settings.py file
SETTINGS_FILE="/path/to/your/django/project/settings.py"
# checks that app $1 is in the django project settings file
is_app_in_django_settings() {
# checking that django project settings file exists
if [ ! -f $SETTINGS_FILE ]; then
echo "Error: The django project settings file '$SETTINGS_FILE' does not exist"
exit 1
fi
cat $SETTINGS_FILE | grep -Pzo "INSTALLED_APPS\s?=\s?\[[\s\w\.,']*$1[\s\w\.,']*\]\n?" > /dev/null 2>&1
# now $?=0 if app is in settings file
# $? not 0 otherwise
}

# adds app $1 to the django project settings
add_app2django_settings() {
is_app_in_django_settings $1
if [ $? -ne 0 ]; then
echo "Info. The app '$1' is not in the django project settings file '$SETTINGS_FILE'. Adding."
sed -i -e '1h;2,$H;$!d;g' -re "s/(INSTALLED_APPS\s?=\s?\[[\n '._a-zA-Z,]*)/\1 '$1',\n/g" $SETTINGS_FILE
# checking that app $1 successfully added to django project settings file
is_app_in_django_settings $1
if [ $? -ne 0 ]; then
echo "Error. Could not add the app '$1' to the django project settings file '$SETTINGS_FILE'. Add it manually, then run this script again."
exit 1
else
echo "Info. The app '$1' was successfully added to the django settings file '$SETTINGS_FILE'."
fi
else
echo "Info. The app '$1' is already in the django project settings file '$SETTINGS_FILE'"
fi
}

用途:

add_app2django_settings "my_app"

关于python - Django 应用程序安装脚本 - 如何将应用程序添加到 INSTALLED_APPS 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7323243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com