投稿する
django練習: 作成者:django-markdownx CSRF token エラー 記録日:2024年6月19日18:34
django練習での記録簿

django admin 403

django-markdownx を使っていると adminにて CSRF token エラーを発生した。

解決策 settins.py に CSRF_USE_SESSIONS = True を追加する

# admin にてのエラー回避
CSRF_USE_SESSIONS = True

2024/06/21 上記の設定をするとエラー発生 django-breezeにて登録、更新、削除ができません

現状取り消しています。


django練習: 作成者:kiyo 記録日:2024年5月27日22:35
django練習での記録簿

django settings.py DEBUG=Falseについて

Debug=False にすると静的ファイルが読み込めない CSS とか JS
なので少し調べてみた


Whitenoiseを使う方法


pip install whitenoise
この後 setting.py に記入
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'whitenoise',  # add
]



MIDDLEWARE = [
   'xxxxxxxxx',
   'whitenoise.middleware.WhiteNoiseMiddleware', # add
].



STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'collectstatic')

STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = (
    STATIC_DIR,
)

DEBUG=False に編集後 python manage.py collectstatic とする

これで静的ファイルが読めるらしい

参考サイト



別の方法(公式かはわかりませんがうまく動きました)

urls.pyに記入 ps: mediaも追加しています。

import re
from django.contrib import admin
from django.urls import path, include, re_path
from django.conf import settings
from django.conf.urls.static import static
from django.views.static import serve

static_patterns = [
    re_path(r"^%s(?P<path>.*)$" % re.escape(settings.STATIC_URL.lstrip("/")),
            serve,
            {'document_root': settings.STATIC_ROOT}),
    re_path(r"^%s(?P<path>.*)$" % re.escape(settings.MEDIA_URL.lstrip("/")),
            serve,
            {'document_root': settings.MEDIA_ROOT}),

] if not settings.DEBUG else []

urlpatterns = static_patterns + [
    path('admin/', admin.site.urls),
    path('xxxxx' xxxx),
]


django練習: 作成者:kiyo 記録日:2024年1月31日23:08
django練習での記録簿

sqlite.db json形式で export

ubuntu22.04LTS
apt install sqlite3
mkdir sqlite-json-export && cd sqlite-json-export
ここへ既存のsqlite.dbをコピーする

sqlite json export

sqlite3 接続

sqlite3 dj-blog.sqlite3 (データベース名)

jsonモードへ

sqlite> .mode json

export用 jsonファイルを作成

sqlite> .once blog_bbstitle.json (書き込むJSONファイル名) // ①

実際へ書き込む

sqlite> select * from blog_bbstitle;  //②


エクスポートしたいテーブルだけ①と②を繰り返す  
②でタイポー等した場合も①からやり直す





終わり

djangoならもっと簡単だった。

jsonデータをエクスポート

python manage.py dumpdata > data.json

作ったjsonデータをインポート

python manage.py loaddata  data.json

ちなみに試してはいない


django練習: 作成者:kiyo 記録日:2019年10月31日21:26
django練習での記録簿

django nginx+gunicorn 自鯖にデプロイ

参考にさせてもらったサイト

django filterの使い方
django チート
djangoでのSQL

開発環境で作成した djangoをサーバーへコピー
仮に 
django-admin startproject mysite
django-admin startapp blog
で作成したとすると
 cd ~/mysite/mysite
 vim settings.py
  DEBUG = True->False

  ALLOWED_HOSTS = [] ->['サーバ名(IPアドレス)']  #又は['*'] 何でもあり どこで見たか忘れたがセキュリティ上 非推奨だったような?

  STATIC_URL = '/static/'
  STATIC_ROOT = '/usr/share/nginx/html/static'
  #  STATICFILES_DIRSの設定をしているならコメントアウト
  #  STATICFILES_DIRS = [
  #    os.path.join(BASE_DIR, 'static'),
  # ]

  # media の設定もあるなら変更
  MEDIA_URL = '/media/'
  MEDIA_ROOT = '/usr/share/nginx/html/media'

python 3.7を使って構築する場合

sudo mkdir /usr/share/nginx/html/media
sudo mkdir /usr/share/nginx/html/static

sudo pip3.7 install django django-markdownx ほかのパッケージも使っていればそれも
sudo pip3.7 install  gunicorn

cd ~/mysite
sudo python3.7 manage.py collectstatic

自分の場合media、startic/css,static/img, static/jsが空だったので強制コピーした。

nginxの設定

sudo vim /etc/nginx/conf.d/project.conf

server {
    listen  80;
    server_name サーバ名かIPアドレス;
    #  画像ファイル等扱う場合 規定値1Mなので増やす
    client_max_body_size 10M;

    location /static {
        alias /usr/share/nginx/html/static;
    }

    location /media {
        alias /usr/share/nginx/html/media;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

ssl等の設定もあれば付け足す。

Gunicornを使って動かしてみる。

cd ~/mysite
sudo gunicorn --bind 127.0.0.1:8000 mysite.wsgi:application
デーモンを使った場合
sudo gunicorn --daemon --bind 127.0.0.1:8000 mysite.wsgi:application

gunicornの起動ファイルを作る。

gunicorn動作させている場合は再起動するか、kill コマンド等で一旦止める

sudo vim /etc/systemd/system/mysite.service


[Unit]
Description=gunicorn
After=network.target

[Service]
WorkingDirectory=/home/ユーザ/mysite
ExecStart=/usr/local/bin/gunicorn --bind 127.0.0.1:8000 mysite.wsgi:application

[Install]
WantedBy=multi-user.target



systemctl を使って起動

sudo systemctl start mysite  
# 起動確認したら、  
sudo systemctl stop mysite    #停止
sudo systemctl enable mysite



django練習: 作成者:kiyo 記録日:2018年10月30日21:27
django練習での記録簿

mongodbのデータをJson形式に変換してdjango内のデータベースへ

myapp/fixtures/data.jsonに jsonファイルを書いて
python manage.py loaddata data.jsonで読み込む