0
0

【Django】プロジェクト名を変更するプログラム

Posted at

はじめに

djangoでプロジェクトを作成後プロジェクト名を変えることがあった(普通はないと思うのですが...)ので、こちらを参考に修正したのですが、(普通はないと思いますが)またプロジェクト名を変更するようなときに同じことをやりたいくない&コードを書く練習になりそう、ということでプロジェクト名を変更してくれるプログラムを作成しました。

コード

rename_django_project.pyという名前でコードを作成しました。
以下、コード全体

rename_django_project.py
# プロジェクトディレクトリに移動してから実行する

import glob, re, os

# 現在のプロジェクト名を取得する
old_project_name = glob.glob("./*/settings.py")[0].split("/")[1]
new_project_name = input()

old_projectdir_path = "./"+old_project_name
new_projectdir_path = "./"+new_project_name 
os.rename(old_projectdir_path, new_projectdir_path)

project_name_in_manage_or_wsgi    = 'os.environ.setdefault.*DJANGO_SETTINGS_MODULE.,\s.*.settings.*'
project_name_in_settings          = 'ROOT_URLCONF\s=\s.*|WSGI_APPLICATION\s=\s.*'

def modify_project_name_in_file(file_path, regex):
    with open(file_path, "r") as file:
    
        # old_project_nameをnew_project_nameに変更する
        code        = file.read()
        old_names    = re.findall(regex,code)
        for old_name in old_names:
            #old_name    = f"{old_name.group()}"
            new_name    = old_name.replace(old_project_name, new_project_name)
            code        = code.replace(old_name,new_name)
            print(code)


    with open(file_path, "w") as file:
        file.write(code)

modify_project_name_in_file("./manage.py", project_name_in_manage_or_wsgi)
modify_project_name_in_file(new_projectdir_path + "/wsgi.py", project_name_in_manage_or_wsgi)
modify_project_name_in_file(new_projectdir_path + "/settings.py", project_name_in_settings)

このコードをホームディレクトリの適当な場所に配置してaliasを登録しておけば気軽にプロジェクト名の変更ができます。

作成してみて

正規表現の書き方やpythonでのファイルの読み書きがよくわかってないなと再認識したので機会があるときはこういうコードを書いて練習してみようと思いました。

参考文献

[Django]プロジェクト名を変更する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0