模型类设计和表生成
class BookInfo(models.Model):
# 字符串类型
btitle=models.CharField(max_length=20)
# 日期类型
bpub_date=models.DateField()
生成迁移文件命令:
python manage.py makemigrations
执行生成迁移文件命令:
python manage.py migrate
数据库更换mysql: https://blog.csdn.net/darling_user/article/details/100060873
通过模型类操作数据表
python manage.py shell 进入命令端
from booktest.models import BookInfo
from datetime import date
b=BookInfo()
b.btitle='天龙八部'
b.pub_date=date(1990,1,1)
b.save() //增
b.delete() //删
b2=BookInfo.objects.get(id=1)
b2.bpub_date=date(2000,1,1)
b2.save() //改
b2.bpub_date //查
模型类关系和关系查询
# 图书与英雄 一对多的关系
hbook=models.ForeignKey('BookInfo',on_delete=models.CASCADE,)
BookInfo.objects.get(id=1)
BookInfo.objects.all()
b.heroinfo_set.all()
h=HeroInfo().objects.get(id=1)
h.hbook.btitle //查询英雄所属的书籍名称
Django后台管理
1、本地化,修改时区和语言等
2、创建管理员
python manage.py createsuperuser
python manage.py runserver //启动服务
python manage.py runserver 127.0.0.1:8001 //指定端口号
3、注册模型类
admin.py下
admin.site.register(BookInfo)
4、自定义管理页面
admin.py下
class BookInfoAdmin(admin.ModelAdmin):
list_display = ['id','btitle','bpub_date']
admin.site.register(BookInfo,BookInfoAdmin)
在后台管理实现增删改查
视图使用,即控制器
1、定义视图
2、进行url配置
3、url匹配过程
index与index2匹配的差异:全匹配
模板的使用
1、项目下新建templates文件夹(默认有了),并在settings.py配置
2、在templates下,新建booktest(app名称)的目录后再新建一个index.html
3、在视图views.py,修改视图index的返回值
return render(request,'booktest/index.html',{'content':'hello world','list':list(range(0,9))})
4、模板变量
<p>这是变量:{{ content }}</p>
<p>输出列表{{list}}</p>
遍历列表for:<br/>
<ul>
{% for i in list %}
<li>{{ i }}</li>
{% empty %}
<li>没有查询到英雄信息</li>
{% endfor %}
</ul>
MVT综合小案例
url中patch,re_path与url的区别?
模板如何传递值给视图?
模板配置:
<a href="books\{{ book.id }}">{{ book.btitle }}</a>
urls配置:
url('^books/(\d+)$',views.show_heros) # 显示英雄信息
视图配置:
def show_heros(request,bid):
Django配置使用mysql
create database bj18 charset=utf8;
在settings.py中配置mysql数据库
python2安装mysql-python
pip install mysql-python
python3安装pymysql
pip install pymysql
项目__init__.py要同步配置:
import pymysql
pymysql.install_as_MySQLdb()
MVT复习案例
1、url重定向 rederct
2、<a href="/create">新增</a><a href=“create”>新增</a>区别
建议使用第一种,加上/
模型类_字段属性和选项
Django字段属性和选项
models.DateField() # 年月日
models.TimeField() # 时分秒
models.DateTimeField() # 年月日时分秒
ajax请求
异步的JavaScript
Django之AJAX传输JSON数据
HttpResponse与JsonResponse区别
ajax基本使用请看ajax登录案例