檢視 Django筆記 的原始碼
←
Django筆記
跳至導覽
跳至搜尋
由於下列原因,您沒有權限進行編輯此頁面的動作:
您請求的操作只有這個群組的使用者能使用:
使用者
您可以檢視並複製此頁面的原始碼。
{{Nav|程式語言、邏輯學}} 這裏是偏碎片化的記錄,另可參考:[[Django Unleashed筆記]]。 ==建立新專案== <code>django-admin startproject [網站目錄名]</code> ==跑伺服器== <code>cd [網站目錄名]; ./manage.py runserver [Port number]</code> == app vs project == app 可以算是一個 project 的功能大分區。但不知道 app 能不能夠共用資料。 == Model, View, Url == === 子結構說明 === * urls.py - url 網頁路徑傳送門 * views.py - 顯示的方式 ===urls.py 基礎=== 假設urls.py 的所屬目錄包含 views.py,views.py有user這個函數,我們要傳字串/user/abc 的 abc 當成 user 函數的 username 變數,則可以這樣設定: <pre> from django.contrib import admin from django.urls import path from . import views urlpatterns = [ path('/users/<slug:username>', views.user), path('admin/', admin.site.urls), ] </pre> ===view.py=== ==== 處理 POST body 裏的 json ==== <pre> if request.method == 'POST': post_body_orig = request.body.decode('utf-8') post_body_json = json.loads(post_body_orig) post_text = post_body_json["text"] print(f"結果:{post_text}") </pre> ====回傳 json(ActivityPub 用)==== 假設要做 [[ActivityPub]]協定,回傳 json 的話,可以這樣設定: <pre> from django.http import Http404, HttpResponse import json from . import config # import the config variables in the file './config.py'. def user(request, username): user_json = {"@context": "https://www.w3.org/ns/activitystreams", "id": config.site_url + "/users/" + username, "inbox": config.site_url + "/users/" + username + "/inbox", "outbox": config.site_url + "/users/" + username + "/outbox", "type": "Person", # the json for the type "name": username , # user name } if username != 'John': raise Http404() # throw 404 else: # return json file with setting content_type return HttpResponse(json.dumps(user_json), content_type="application/activity+json") </pre> 如果不是 John,就回傳 Http404()。 === model.py === *<code>models.DateField</code>儲存日期,<code>models.DateTimeField</code>儲存日期時間。參考:[https://docs.djangoproject.com/en/4.1/ref/models/fields/ Model field reference]。 == 伺服器類設定 == ===設定Gunicorn(這可能沒有用)=== /etc/systemd/system/gunicorn.service <pre> Group=www-data WorkingDirectory=/root/lianlok ExecStart=/usr/local/bin/gunicorn(或其他絕對路徑) --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock lianlok.wsgi:application [Install] WantedBy=multi-user.target </pre> ===設定 nginx=== site-available 裏面的 test 設定檔為: 前提要先 ./manage.py runserver 8080。 <pre> server { listen 80; server_name 127.0.0.1; # https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-in-production # location /static/ { # STATIC_URL # alias /home/www/example.com/static/; # STATIC_ROOT # } access_log /root/log/lianlok-access.log; error_log /root/log/lianlok-error.log; location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scheme $scheme; proxy_pass http://127.0.0.1:8080; } } </pre> ==setting.py 使用 SQLite== <pre> import os DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } </pre> == 使用者管理 == === 用戶的 class === * <code>[https://docs.djangoproject.com/en/4.1/ref/contrib/auth/#user-model django.contrib.auth]</code> 的 User class,實作了相關的欄位(姓、名、密碼等),可以使用。 * 如果要擴充自定義 User,使用<code>[https://docs.djangoproject.com/en/4.1/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser django.contrib.auth.models 的 AbstractBaseUser]</code>。 === 建立登入、登出、註冊帳號畫面 === * [http://dokelung-blog.logdown.com/posts/234437-django-notes-10-users-login-and-logout Django筆記(10) - 用戶的登入與登出] * [https://developer.mozilla.org/zh-TW/docs/Learn/Server-side/Django/Authentication Django Tutorial Part 8: User authentication and permissions - MDN] 包含申請帳號的頁面 ==參考== * https://docs.djangoproject.com * https://stackoverflow.com/questions/58024196/nginx-proxy-pass-gunicorn-can-t-be-reached 以及其他 stack overflow 答案 * https://chentsungyu.github.io/2020/07/19/Python/Django/%5BDjango%5D%20%E5%9C%A8Ubuntu%E4%B8%AD%E9%81%8B%E7%94%A8Nginx%E3%80%81Gunicorn%20%E6%9E%B6%E8%A8%AD%20Django%20API%20Server * https://github.com/ekam317/Website/blob/master/ebdjango/settings.py [[category:資訊]]
此頁面使用了以下模板:
模板:Nav
(
檢視原始碼
)
返回到「
Django筆記
」。
導覽選單
個人工具
登入
命名空間
頁面
討論
變體
視圖
閱讀
檢視原始碼
檢視歷史
更多
搜尋
導覽
首頁
愛爾蘭語辭典
近期變更
隨機頁面
有關 MediaWiki 的說明
相關網站
總首頁
Blog
舊 blog
現用 blog 備份
工具
連結至此的頁面
相關變更
特殊頁面
頁面資訊