最近阅读了虫师的书籍,关于虫师分析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里面的内容。
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()
数组模型
保存数据方式1:
报的错是时间区不对
在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
网友评论