django学习笔记(自用)

django视频学习:
···p9有关数据模型需要看看。
以下知识应该可以自己搭博客了。
django这种大框架有点难开头,教程我也找了很多,发现这种大框架还是看视频学比较好,我找到了很好学的教程

models.py:与数据库进行交互。models下有以下数据模型:CharField、DateTimeField、IntegerField、BooleanField…
当没有规定主键的时候会自动生成主键。
视频规定了2个类,一个是Grades,一个是Students,因为Students要存到对应的grades里面去,所以在Students类里面加一个数据类型ForeignKey(‘Grades’)(2.0以后需要在绑定的后面,加入on_delete=models.CASCADE(),这个参数是代表当被绑定的外键被删除后子键进行的处理)。

当models.py配置完成后,就可以制造数据库了,python manage.py makemigrations。成功后在app的migrations文件下的0001_inital.py下可以查看相关信息。(没有创造主键的可以发现在Migration下的operations列表下的files除了之前创造的数据模型,还多了一个ID,这个ID就是自动生成的主键)。之后再输入python manage.py migrate(数据库迁移,迁移之后可以在数据库中查看到生成的tables)。

查看生成的tables,可以发现有两个tables名为app名字_grades和app名字_students(之前在models里面创造的类都生成了table)

将数据存入数据库:
在项目目录下输入python manage.py shell
对你所创造的数据类型进行操作:

from myapp.models import Grades,Students #必须要导入这个类,后面的方法才能实现
from django.utils import timezone
from datetime import *

grade1 = Grade() #grade1为Grade类
grade1.gname = 'x'
grade1.gdate = datetime(year=2019,month=2,day=17)
....... # 对其他Grade类的变量赋值(必须要把在models.py中定义的数据类型(除了外键)全部赋值,否则会报错,如果要赋值外键的话,需要在这之前就通过后面的 类名.object.get(pk=..) 获得某一行进行赋值)
grade1.save() #对所赋值的变量保存到数据库中,并可以通过数据查询到所存的数据(如果在某个类里面定义__str__(self)方法,(重新进来)当调用Grades(一个类).object.all()时显示的就是一个列表,里面包含了所有存进去的__str__():方法的return值)

在Shell中对数据库的某个类的table(也就是数据库里面的项目名_类名的数据库)进行操作:
(1)查看:如果想查看单个object,利用Grades(一个类名).object.get(pk=想查看的数据的id值,也就是主键值)。想查看所有的
(2)修改:查看的方法会返回table里面的一行(之前pk查看的),如果要修改可以直接将查看的值赋值给一个变量,修改的话直接 变量名.col = … 进行修改 (最后要保存 变量名.save() )
(3)删除:
①物理删除:直接按照上面的 .delete()方法删除
(4)增加:除了之前的赋值一个新的对象后一个个赋值以外,也可以通过一个外键的方式进行存储,方法为:例如:grade1.students_set.create(sname=‘x’…可以不全部赋值)

在setting.py中修改语言:
在LANGUAGE_CODE = ‘zh-Hans
在setting.py 中修改时区:’
在TIME_ZONE = ‘Asia/shanghai’’

admin进行站点管理:
内容发布:负责添,修,删
创建管理员用户:在该目录cmd下输入python manage.py createsuperuser。

管理数据表,修改admin.py:
需要导入model下的类,然后进行注册。
(示例代码为:
from django …
from .models import Grades,Students
admin.site.register(Grades) #注册Grades类
admin.site.register(Students) #注册Students类

自定义管理界面:
class GradesAdmin(admin.ModelAdmin):
#列表页属性:
list_display=[‘pk’,‘gname’,‘gdate’,‘ggirlnum’,‘gboynum’,‘isDelete’] #按照顺序,显示每一行一个类的值
list_filter = [ … ] # 过滤器,可以加多个进行选择(如果之前在数据模型里面没有定义pk这个值,里面加入了pk就会报错)
search_fields = [ … ] # 搜索器,使用后将会在上面出现搜索栏,列表里面的内容就是搜索的属性(如果有多个不知道怎么搜)
list_per_page = [ … ] # 每页多少行,自行设置,超过这个数字就会出现多页

#添加、修改页(页面右上方出现的增加就是添加页面,直接点击某一个数据的主键就是修改页面)属性
fields = [ … ] # 按照顺序在页面显示属性,如果没有就是不能修改 (与fieldsets不能同时使用)
fieldsets = [
(“num”,{“fields”: [‘ggirlnum’,‘gboynum’] }),
(“base”,{‘fields’: [‘gname’,‘gdate’,‘isDetele’ ]})
] #给属性分组 (与fields不能同时使用)

如果想在管理页面添加的时候一次添加多个对象

后面要将这些属性应用到进去:
admin.site.register(Grades, GradesAdmin) #将显示类里面应用到Grades的register页面里面去

views.py:创建视图
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse(“sunck is a good man”)

在项目名/urls.py下:
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path(‘admin/’, admin.site.urls), #代表输入网站/admin就会跳转到admin.site.urls下(管理员界面)
path’aaa/’,include(‘myapp.urls’)) #代表输入任何网站就会跳转到myapp.urls下
]

在myapp文件下新建一个urls.py文件:
from django.urls import path,re_path
from . import views
urlpatterns = [
path(‘aaa’,views.index) #与上面结合,也就是输入网站/aaa/aaa会访问views.py下的index类,显示的内容就是return 下的HttpResponse(里面显示的内容(可以是html+css+js)
]

创建模板目录:
在大的project文件下(与app文件夹同级)创建templates的文件夹,再在里面创建app名字的文件夹。
配置路径:
修改setting.py下的TEMPLATES属性,里面有一个‘DIRS’,变成[os.path.join(BASE_DIR,‘templates’)]
新建grades.html和students.html:
与html代码一样,模块语法:
①{{输出值,可以是变量,可以是}}
②{%输出代码段%}
创建grades页面,并使其能搞访问数据库的grades类:

视频中:在templates文件夹下的myapp下新建grades.html文件,输入(body中):

班级信息列表

继续在views.py中新建一个类并导入Grades类,代码:
from .models import Grades,Students
def grades(request):
#去模板取数据
gradesList = Grades.objects.all() #获取Grades的所有内容,gradesList存着所有Grades内容
#gradesList传递给模板,模板在渲染页面,将渲染的页面返回浏览器
return render(request,‘myapp/grades.html’,{“grades”:gradesList}) #render第一个参数是request,第二个参数是要传的路径,第三个的原因是因为在html文件中的储存变量的是grades,所以最后一个变量就是将gradesList内容传给里面的grades。
pass

视频来源:B站千峰python

你可能感兴趣的:(自学旅程,Python相关)