閱讀蟲師django開發(fā)發(fā)布會系統(tǒng)以及django開發(fā)Web接口分享

最近閱讀了蟲師的書籍,關(guān)于蟲師分析django Web開發(fā)以及django 開發(fā)Web接口,通過閱讀蟲師的書籍,學(xué)到了很多東西,在這里分享一下,和簡友一起學(xué)習(xí)和討論

1、創(chuàng)建項(xiàng)目django-admin startproject duodian
2、創(chuàng)建應(yīng)用python manage.py startapp myduodian,將myduodian添加到應(yīng)用中
3、運(yùn)行項(xiàng)目 python manage.py runserver,可以通過連接http://127.0.0.1:8000訪問就可以It Worked
4、在urls.py中配置url(r'^index/',views.index)
需要導(dǎo)入from myduodian import views
5、在views.py中定義一個方法

from django.http import HttpReponse
def index(request):
return HttpReponse("你好 我的世界")

運(yùn)行 python manage.py runserver,在瀏覽器中輸入http://127.0.0.1:8000/index即可顯示,就可以在頁面看到你好 我的世界

6、在myduodian文件夾下創(chuàng)建templates文件夾,在文件夾templates創(chuàng)建模板,index.html
7、修改views.py里面index函數(shù)

from django.http import HttpReponse
def index(request):
return render(request,'index.html')

再運(yùn)行即可顯示index.html里面的內(nèi)容。

項(xiàng)目運(yùn)行在現(xiàn)在,我們簡單的看下項(xiàng)目目錄:
duodian.png

8、(1) form POST提交會出現(xiàn)CSRF失敗,這時我們需要在form表單里面添加{% csrf_token %},刷新表單即可。
另一種方法就是在setting.py種去掉csrf中間件,也能繼續(xù)訪問,但是這種做法不推薦。
(2) 表單提交時屬性為action=/login_action/,在瀏覽器中訪問鏈接就是http://127.0.0.1:8000/login_action/

9、render(request,''index.html'',{'error':'失敗了'})
在模板html文件中使用{{ error }}

10、重定向

from django.http import HttpResponse,HttpRespinseRedirect
return HttpRespinseRedirect('/event_manage')

11、Cookie、Session


12、python manage.py migrate進(jìn)行數(shù)據(jù)遷移
同時也會生成auth_user表,該表中存放的用戶信息可以用來登錄Django自帶的Admin管理后臺

13、登錄Admin后臺python manage.py createsuperuser,自設(shè)賬號和密碼,
Admin管理后臺登錄地址:http://127.0.0.1:8000/admin/

14、如果設(shè)置某個函數(shù)只能登錄才能訪問

@login_required
def event_manage(request):

15、在models.py中創(chuàng)建模型類,每一個模型類就對應(yīng)數(shù)據(jù)庫中的每一個表

16、創(chuàng)建好模型類以后,python manage.py makemigrations myduodian執(zhí)行數(shù)據(jù)庫遷移,遷移成功就會在數(shù)據(jù)庫中創(chuàng)建表

補(bǔ)充:項(xiàng)目創(chuàng)建是在虛擬環(huán)境外面創(chuàng)建的,但是python命令操作都是在虛擬環(huán)境下


17、在13中Admin后臺管理用戶/用戶組可以,創(chuàng)建的發(fā)布會和嘉賓表也可以通過Admin后臺管理,需要在admin.py注冊管理的表

from myduodian.models import Event,Guest
admin.site.register(Event)
admin.site.register(Guest)

修改setting.pyzh-hans后臺變成漢字

18、Admin后臺管理界面簡單設(shè)置

class EventAdmin(admin.ModelAdmin):
list_display=['id','name']

class GuestAdmin(ModelAdmin):
list_display = ['realname','phone']
search_fields = ['phone']
list_filter = ['name']

admin.site.register(Event,EventAdmin)
admin.site.register(Guest,GuestAdmin)
可以理解成用EventAdmin來注冊Event模塊

19、python manage.py shell執(zhí)行命令操作Django模型
20、 查詢數(shù)據(jù):Event.objects.all()數(shù)組模型

Event.png

保存數(shù)據(jù)方式1:

save.png

報的錯是時間區(qū)不對
在setting.py文件中修改USE_TZ=False即可
保存數(shù)據(jù)方式2:
Event.objects.create(id=3,name="你好")

21、獲取數(shù)據(jù)方式

Event.objects.get(name = "nihao").limit
返回的是name等于你好的模型對象,django的get去取得關(guān)聯(lián)表的數(shù)據(jù)的話,而關(guān)鍵表的數(shù)據(jù)如果多于2條的話也會報錯

django的filter方法是從數(shù)據(jù)庫的取得匹配的結(jié)果,返回一個對象列表,如果記錄不存在的話,它會返回[]。 
比如我數(shù)據(jù)庫里有一條記錄,記錄的name的值是老王python的話,我用 
student = Student.objects.filter(name='老王python')
student = Student.objects.filter(name__contains='老王python')
student.delete()刪除數(shù)據(jù)
更新字段1:
student.name = "小明"
student.save()注意要保存哦
更新字段2:
Guest.objects.select_for_update().filter(phone="17078075655").update(realname="andy")

22、SQLite管理工具
SQLite Manager 火狐瀏覽器插件,下載裝插件
SQLiteStudio 下載安裝就可以,sqlitestudio.pl下載

23、下載mysql

配置mysql
安裝pymysql
python中庫mysql-python 連接mysql
connect()建立數(shù)據(jù)庫鏈接
cursor()獲取數(shù)據(jù)庫操作游標(biāo)
execute()執(zhí)行sql語句
commit()提交事務(wù)
close()關(guān)閉數(shù)據(jù)庫鏈接
from pymysql import cursors,connect
conn = connect(
host=''127.0.0.1,
user='root',
password='',
charset='utf-8',
cursorclass=cursors.DictCursor)
 with conn.cursor() as cursor:
sql = "insert into sign_quest(realname,phone) values('name',17078075655)"
cursor.execute(sql)
# 提交事務(wù)
conn.commit()
# 關(guān)閉
finnally conn.close()

查詢信息
sql = "select phone from sign_quest where phone =%s"
cursor.execute(sql,("17078075655",))

在django中配置mysql
在setting.py修改databases就好

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST':'127.0.0.1',
        'PORT':'3306',
        'NAME': 'test',
        'USER':'root',
        'PASSWORD':'',
    }
}

24、從sqlite3數(shù)據(jù)庫切換到mysql中,需要做到數(shù)據(jù)庫同步,保證數(shù)據(jù)的完整性,執(zhí)行python manage.py migrate

python2 不支持用pymysql 需要在myduodian、init.py中輸入
import pymysql
pymysql.install_as_MySQLdb()
因?yàn)閾Q了數(shù)據(jù)庫后臺管理賬號也需要重新設(shè)置python manage.py createsuperuser
mysql可視化管理工具Navicat
SQLyog


25、django模板

Django-boostrap3 集成在Django中的,下載安裝使用,要寫在settIng.py應(yīng)用中bootstrap3,在INSTALLED_APPS=[
bootstrap3
]
pip install Django-bootstrap3

加載用用、css、js文件
{%  load bootstrap3  %}
{  bootstrap3_css   }
{   bootstrap3_javascript   }

26、分頁器

page = Paginator([],2)
page.count 查看共多少條數(shù)據(jù)
page.page_range查看共分多少頁

page1 = page.page(1)查看第一頁數(shù)據(jù)
page1.object_list當(dāng)前頁的對象

page2 = page.page(2)獲取第二頁數(shù)據(jù)
page2.start_index本頁第一條數(shù)據(jù)
page2.end_index本頁最后一條
page2.has_previous() 是否有上一頁
page2.has_next是否有下一頁

page2.previous_page_number()上一頁是第幾頁
page2.next_page_number()下一頁是第幾頁
page2.has_other_pages()是否有其他頁

URL 鏈接:'r(^sign_index/(?p<eid>[0-9]+)/ $'參數(shù)

from django.shortcuts import render,get_object_or_404
event = get_object_or_404(Event,id=eid)

27、連接增加參數(shù)

action="/sign_index_action/{{ event.id }}/"參數(shù)
Guest.objects.filter(phone=phone,event_id=eid).update(sign='1')


28、退出登錄:

def logout(request):
auth.logout(request)  # 退出登錄
return HttpResponsedirect('/index/')

實(shí)現(xiàn)登錄功能

def login(request):
auth.login(request)  # 退出登錄
return HttpResponsedirect('/index/')

29、開發(fā)系統(tǒng)web接口

url配置:(r'^api/',include(''sign.urls,namepace="sign"))
JsonResponse({'status':200,data:[]})
JsonResponse({'status':200,'messge':"error"})

30、下載好pycharm壓縮文件在bin下執(zhí)行下列代碼即可

開啟pycharm用sh ./pycharm.sh
激活用http://idea.imsxm.com
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容