開啟主選單
首頁
隨機
登入
設定
關於Tan Kian-ting的維基
免責聲明
Tan Kian-ting的維基
搜尋
檢視 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]。 * Django 儲存建立時間的時候,會有到微秒 (10^-6 sec) 的小數點。取用資料時要小心,避免踩到坑。 ==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://www.learncodewithmike.com/2020/04/django-authentication-and-usercreationform.html [Django教學8]Django UserCreationForm實作網站登入驗證及註冊功能分享] 註冊頁面介紹 == 佈署 (deploy) Django app、伺服器設定 == * 參:[[Django筆記/佈署Django專案]] ==參考== * 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筆記
」。