Django 知識回顧做個小DEMO

2021-10-20 02:13:44 字數 4524 閱讀 5527

忠誠與義氣的角逐 正義與**的廝殺 每一次重生都將是死亡的召喚!
前幾節的知識包含了檢視函式,路由對映,資料管理,結合這幾個知識點,嘗試做出乙個極簡的發布文字然後可以獲取文字的demo

按照django的流程順序走一波

django-admin startproject nhdz
然後

cd nhdz
繼續

然後在根目錄建立資料夾templates,static,然後再static資料夾建立upload資料夾,在templates建立兩個html檔案

檔案結構圖如下

# 這個儲存文字型別

user = models.charfield(max_length=8)

texts = models.textfield()

date = models.datefield(auto_now_add=true)

class dz_images(models.model):

user = models.charfield(max_length=8)

images = models.imagefield(upload_to='static/upload')

# 上傳的檔案儲存到static/upload目錄下

date = models.datefield(auto_now_add=true)

然後修改檔案

# nhdz/settings.py

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

]templates = [,},

]time_zone = 'asia/shanghai'

然後修改檔案

from django.contrib import admin

from .models import dz_texts,dz_images

admin.site.register(dz_texts)

admin.site.register(dz_images)

然後命令列輸入:

python3 manage.py makemigrations

python3 manage.py migrate

python3 manage.py createsuperuser

# 根據提示建立管理員

編輯視**件

# 主入口

return render(request, 'add.html')

def add_texts(request):

if request.method == 'post':

try:

user = request.post.get('user')

texts = request.post.get('texts')

print('獲取到的資料 : {} : {}'.format(user, texts))

dz_texts.objects.create(user=user, texts=texts)

return httpresponse('提交成功~')

except:

raise http404('引數錯誤~')

else:

return http404('請求方式錯誤~')

def add_images(request):

# 上傳可以使用django自帶的form表單,但是暫時沒接觸,所以使用類似於flask中的上傳方法

if request.method == "post":

myfile = request.files.get("filename", none) # 獲取上傳的檔案,如果沒有檔案,則預設為none

if not myfile:

return httpresponse("沒有選擇檔案")

destination = open(os.path.join(os.getcwd()+'\\static\\upload', myfile.name), 'wb+') # 開啟特定的檔案進行二進位制的寫操作

for chunk in myfile.chunks(): # 分塊寫入檔案

destination.write(chunk)

destination.close()

return httpresponse("上傳成功")

else:

return http404('請求方式錯誤~')

還有展示檔案

raise http404('引數錯誤')

編輯路由檔案

from django.urls import path

from .views import index,add_images,add_texts

from .show import show

urlpatterns = [

path('',index,name='index'),

path('add_texts/',add_texts,name='add_texts'),

path('add_images/',add_images,name='add_images'),

path('show//',show,name='show')]

以及根目錄下的路由檔案

#nhdz/urls.py

from django.contrib import admin

from django.urls import path,include

urlpatterns = [

path('admin/', admin.site.urls),

]

編輯模板檔案

#nhdz/templates/add.html

然後嘗試看看能不能正常新增

python3 manage.py runserver

隨後訪問:

那麼先試一試新增文字看看

提交成功

檢視後台看看有沒有資料,登陸:

接下來嘗試上傳檔案

上傳成功

ok~到此為止上傳和發布部分的功能暫時完成,但是存在安全隱患,即任意檔案上傳漏洞,不過不在現在的討論範圍

然後嘗試訪問看看能不能獲取

因為檢視函式show.py 中的show函式接受的引數是用作資料庫查詢的user,所以直接返回的是資料庫中user=admin的資料

乙個粗略的模型就這樣了- -,雖然非常非常的簡陋,不過也是暫時能用所學的知識做到的事情了,慢慢學吧0.0

MySQL知識回顧 MySQL基礎知識回顧

markdownpad document mysql mysql 是用於管理檔案的乙個軟體 服務端軟體 socket服務端 本地檔案操作 解析指令 sql語句 客戶端軟體 各種各樣 socket客戶端 傳送指令 解析指令 sql語句 ps dbms 資料庫管理系統 sql語句 需要掌握的技能 安裝 ...

MySQL知識回顧 MySQL基礎知識回顧

markdownpad document mysqlmysql 是用於管理檔案的乙個軟體 服務端軟體 socket服務端 本地檔案操作 解析指令 sql語句 客戶端軟體 各種各樣 socket客戶端 傳送指令 解析指令 sql語句 ps dbms 資料庫管理系統 sql語句 需要掌握的技能 安裝 服...

Vue知識回顧

年初第乙個 flag 就是掌握 vue 哈哈 vue react angular 三大主流框架,最後我選擇學習 vue 接觸過 react 自己感覺學習曲線有些陡峭,進而我選擇了學習 vue 他的學習曲線平穩很多 不管選擇什麼框架,除了對基礎的知識有一定的了解掌握,還應該對 es6 有一定的了解 這...