開發一個網站(1)
阿新 • • 發佈:2020-10-14
這半個月除了上課就是一直在學習django,萬事開頭難,好多東西現在還沒搞明白,如今只能記錄一下自己在views.py和urls.py裡面瞭解到的東西。
首先先建立一個自己的app.命令是:python3 manage.py startapp blog (blog 是APP的名字)
這裡面的urls.py 是我自己建立的,本來應該寫在下面那個urls.py 裡面,但是一旦這個專案裡面APP數量多,各個app的路徑都混在一起十分不方便,因此每一個app都管理自己的路徑,涇渭分明,而專案的urls.py 只需要指定app的路徑即可。
from django.contrib import admin
from django.urls import path
from django.urls import include
urlpatterns = [
path('admin/', admin.site.urls),
# 每個app的總路徑放到配置裡面,支線路徑分配到各個app裡面,即app內部的urls.py
path("blog/",include('blog.urls')),#include是用來匯入每個app裡面urls的路徑,相當於支路
]
各個APP裡面的urls.py是這個樣子的
from django.urls import path#包含四個引數,第一個是路徑名,第二個是輸入這個路徑後執行的函式
from blog import views#匯入views.py,便於執行裡面的函式。
urlpatterns = [
# 第三個引數可以傳檢視函式的引數,名字要一致
# 第四個引數是該頁面的別名,無論第一個路徑引數如何變,只要輸入別名的路徑都能返回想要的頁面
# 這個在form表單裡面action可以用到{%url 'blog/user_info'%},當你提交後仍然可以返回該介面
path("cur_time/",views.cur_time,{"year":'1908'}),
path("user_info/", views.user_info,name="blog/user_info"),
path("cycle/",views.cycle),
path("index/",views.index),
]
接下來就是views.py檢視函數了。每個APP裡面都會有
from django.shortcuts import render,redirect,HttpResponse
# Create your views here.
def cur_time(request):
return render(request,"blog/cur_time.html")#render是渲染,把html裡面的語言轉換成我們瀏覽識別的東西
首先你要開啟一個域名,自定義即可。指令為python manage.py runserver 127.0.0.1:8080
開啟瀏覽器輸入127.0.0.1:8080/blog/cur_time就會顯示你製作的cur_time.html這個頁面
開啟頁面後我們想要傳遞資料,有以下幾種方法。
(1)def cur_time(request):
cur_time=time.ctime()
return render(request,"blog/cur_time.html",{"cur_time":cur_time})
在前端頁面要寫一下<h1>當前時間是:{{cur_time}}</h1>#注意前端雙大括號裡面的名字要和檢視函式鍵名對應,資料是以鍵值對的形式傳遞
(2)剛剛在urls.py 就說過,第三個引數就可以是傳遞到前端的資料,也是用鍵值對錶示
def cur_time(request,year):#這個引數的名字要和urls.py 裡面鍵名一致
return render(request,"blog/cur_time.html",{"Year":year})
前端頁面內容是:<h1>年份:{{Year}}</h1>
(3)def cur_time(request):
s=[1,2,3,4]
s1={"name":"star","age":18}
return render(request,"blog/cur_time.html",locals())
#加上locals()這個函式就可以把s和s1的資料全部傳遞到前端,前端再利用模板語言取出來渲染到頁面上即可(剛剛雙大括號就是一個模板語言)
#由於用到的模板語言很少。例如if else或者for迴圈之類的,還可以把字典裡面特定的鍵值對取出來,這裡就不說了。
以上三種方法都可以從後端獲取資料,接下來在記錄一下自己寫的html要放到哪裡,後端是怎麼找到它的。
先是要設定settings.py,看裡面有沒有如下程式碼
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
這一段是指定了我們templates資料夾路徑,然後我們寫的html檔案放在這裡面
return render(request,"blog/cur_time.html")就可以找到相應的html檔案
至於css和js內容我們也要在settings.py指定一個資料夾路徑
可以看出資料夾名稱就叫static了
這樣一來,在html裡面head標籤引入css和js 或者圖片就比較方便了
暫時就這麼多內容,這些天我也在寫前端的頁面,想要開發一個屬於自己的網站。如今登入頁面和主頁面已經寫好了,後續會不斷分享自己的進度