BBS項目數據設計python
數據庫設計: User -id -name -password -email -phone -avatar 用戶頭像 -create_date 用戶註冊時間 -blog Blog -id -title #博客標題 -site_name #站點名稱 -theme category(分類): #一個站點能夠有多個分類,但分類只屬於建立分類那我的的站點 -nid -title -blog 跟blog一對多 tag:(文章關鍵字) -id -title -blog 跟blog一對多 article -id -title -desc 摘要 -create_time auto_add_now:當該條記錄建立時,自動添加當前時間 -content 文章內容 -category 一對多 一個分類能夠有多個文章 -tag 多對多 多個文章能夠有多個關鍵字 -blog 一對多 一個博客站點能夠有多個文章 commit(評論) -id -user 哪一個用戶 外鍵 -article 對哪篇文章 外鍵 -content 評論了什麼內容 -commit_time 時間 -parent_id 這個綁定commit 的id nid user article content parent_id 1 1 1 111 null 2 2 1 222 null 3 3 1 333 1 4 4 1 444 3 5 3 1 555 4 UpandDown(點贊數 反對數) -nid -user 哪一個用戶 -article 對哪篇文章 -is_up 點贊仍是點踩
from django.shortcuts import render, HttpResponse from PIL import Image,ImageDraw,ImageFont import random from io import BytesIO def get_valid_code(request): # 第一種方式 with open('static/img/lhf.jpg','rb') as f: # 圖片二進制 data=f.read() return HttpResponse(data) # 第二種方式:隨機生成一張圖片 # pip3 install Pillow # pillow 是一個圖形處理的模塊,功能很強強大 # 生成一張圖片,第一個參數是模式:RGB,第二個參數是圖片大小,第三個參數是圖片顏色 img = Image.new('RGB', (320, 35), color=get_random_color()) # 保存到本地 with open('valid_code.png', 'wb') as f: # 直接用img的save方法,第一個參數是空文件,第二個參數圖片格式 img.save(f, 'png') # 打開文件,再返回 with open('valid_code.png', 'rb') as f: data = f.read() return HttpResponse(data) #from io import BytesIO #BytesIO 是在內存中生成空文件進行管理 能自動清理 速度更快 # 第三種方式 # 在內存中生成一個空文件(把它想象成 open('valid_code.png', 'wb') as f:) # 一個是在硬盤上,一個是在內存中 img = Image.new('RGB', (320, 35), color=get_random_color()) f = BytesIO() # 把圖片保存到f中 # 放到內存中,存取比較快,並且有自動清理 img.save(f, 'png') data = f.getvalue() return HttpResponse(data) # 第四種方式,在圖片上寫文字 img = Image.new('RGB', (320, 35), color=get_random_color()) # 拿到畫筆,把圖片傳入畫筆 img_draw=ImageDraw.Draw(img) # 生成一個字體對象,第一個參數是字體文件的路徑,第二個參數是字體大小 font=ImageFont.truetype('static/font/ss.TTF',size=25) # 第一個參數,xy的座標,第二個參數:要寫的文字,第三個參數:寫文字的顏色,第四個參數:字體 # 不一樣的字體是不一樣的ttf文件 img_draw.text((0,0),'python',get_random_color(),font=font) f = BytesIO() # 把圖片保存到f中 # 放到內存中,存取比較快,並且有自動清理 img.save(f, 'png') data = f.getvalue() return HttpResponse(data)