阅读虫师django开发发布会系统以及django开发Web接口分享

最近阅读了虫师的书籍,关于虫师分析django Web开发以及django 开发Web接口,通过阅读虫师的书籍,学到了很多东西,在这里分享一下,和简友一起学习和讨论

1、创建项目django-admin startproject duodian
2、创建应用python manage.py startapp myduodian,将myduodian添加到应用中
3、运行项目 python manage.py runserver,可以通过连接http://127.0.0.1:8000访问就可以It Worked
4、在urls.py中配置url(r'^index/',views.index)
需要导入from myduodian import views
5、在views.py中定义一个方法

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

运行 python manage.py runserver,在浏览器中输入http://127.0.0.1:8000/index即可显示,就可以在页面看到你好 我的世界

6、在myduodian文件夹下创建templates文件夹,在文件夹templates创建模板,index.html
7、修改views.py里面index函数

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

再运行即可显示index.html里面的内容。

项目运行在现在,我们简单的看下项目目录:
duodian.png

8、(1) form POST提交会出现CSRF失败,这时我们需要在form表单里面添加{% csrf_token %},刷新表单即可。
另一种方法就是在setting.py种去掉csrf中间件,也能继续访问,但是这种做法不推荐。
(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进行数据迁移
同时也会生成auth_user表,该表中存放的用户信息可以用来登录Django自带的Admin管理后台

13、登录Admin后台python manage.py createsuperuser,自设账号和密码,
Admin管理后台登录地址:http://127.0.0.1:8000/admin/

14、如果设置某个函数只能登录才能访问

@login_required
def event_manage(request):

15、在models.py中创建模型类,每一个模型类就对应数据库中的每一个表

16、创建好模型类以后,python manage.py makemigrations myduodian执行数据库迁移,迁移成功就会在数据库中创建表

补充:项目创建是在虚拟环境外面创建的,但是python命令操作都是在虚拟环境下


17、在13中Admin后台管理用户/用户组可以,创建的发布会和嘉宾表也可以通过Admin后台管理,需要在admin.py注册管理的表

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

修改setting.pyzh-hans后台变成汉字

18、Admin后台管理界面简单设置

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执行命令操作Django模型
20、 查询数据:Event.objects.all()数组模型

Event.png

保存数据方式1:

save.png

报的错是时间区不对
在setting.py文件中修改USE_TZ=False即可
保存数据方式2:
Event.objects.create(id=3,name="你好")

21、获取数据方式

Event.objects.get(name = "nihao").limit
返回的是name等于你好的模型对象,django的get去取得关联表的数据的话,而关键表的数据如果多于2条的话也会报错

django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。 
比如我数据库里有一条记录,记录的name的值是老王python的话,我用 
student = Student.objects.filter(name='老王python')
student = Student.objects.filter(name__contains='老王python')
student.delete()删除数据
更新字段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()建立数据库链接
cursor()获取数据库操作游标
execute()执行sql语句
commit()提交事务
close()关闭数据库链接
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)
# 提交事务
conn.commit()
# 关闭
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数据库切换到mysql中,需要做到数据库同步,保证数据的完整性,执行python manage.py migrate

python2 不支持用pymysql 需要在myduodian、init.py中输入
import pymysql
pymysql.install_as_MySQLdb()
因为换了数据库后台管理账号也需要重新设置python manage.py createsuperuser
mysql可视化管理工具Navicat
SQLyog


25、django模板

Django-boostrap3 集成在Django中的,下载安装使用,要写在settIng.py应用中bootstrap3,在INSTALLED_APPS=[
bootstrap3
]
pip install Django-bootstrap3

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

26、分页器

page = Paginator([],2)
page.count 查看共多少条数据
page.page_range查看共分多少页

page1 = page.page(1)查看第一页数据
page1.object_list当前页的对象

page2 = page.page(2)获取第二页数据
page2.start_index本页第一条数据
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]+)/ $'参数

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

27、连接增加参数

action="/sign_index_action/{{ event.id }}/"参数
Guest.objects.filter(phone=phone,event_id=eid).update(sign='1')


28、退出登录:

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

实现登录功能

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

29、开发系统web接口

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

30、下载好pycharm压缩文件在bin下执行下列代码即可

开启pycharm用sh ./pycharm.sh
激活用http://idea.imsxm.com
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容