django基础2
Posted p0st
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django基础2相关的知识,希望对你有一定的参考价值。
1.模板语言
变量 error
循环 %for item in class_list % # queryset对象 < tr > < td > forloop.counter < / td > # id递增的增加 < td > item.pk < / td > # pk是主键的id < td > item.cname < / td > < td > <a href = "/edit_class/?pk= item.pk " > 修改 < / a > < a href = "/del_class/?pk= item.pk " > 删除 < / a > < / td > < / tr > % endfor %
模板渲染
render(request,‘inde.html‘,‘ret‘:ret,‘ret2‘:ret2)
2.orm操作
models设置 pid = models.AutoField(primary_key=True) pname = models.CharField(max_length=32,unique=True) primary_key=True 设置为主键,相当于mysql里面的primary key max_length=32 设置长度,相当于mysql里面varchar()类型 unique=True 设置唯一,相当于mysql里面的unique 查询
print(models.User.objects,type(models.User.objects)) ----> demo.User.objects <class ‘django.db.models.manager.Manager‘>
1.all() ret = models.User.objects.all().order_by(‘pk‘) # 查找所有的数据。并按照主键id排序 print(ret,type(ret)) -----> ret = models.User.objects.all().order_by(‘pk‘) all():查询出来的是queryset类型的对象列表,可以通过render()方法渲染到前台页面
2.filter()
ret1 = models.User.objects.filter(pk=1) # 根据条件过滤
print(ret1, type(ret1)) ---> <QuerySet [<User: User object>]> <class ‘django.db.models.query.QuerySet‘>
filter(): 查询出来对象进行过滤,也是queryset对象。只有queryset类型的才能在前端进行for循环渲染
3.get()
ret = models.User.objects.get(username=user, ) # 找不到就报错 找到多个也报错
print(ret,type(ret)) ---> User object <class ‘demo.models.User‘>
增加
# 方式一 ret = models.Publisher.objects.create(name=pub_name) # 方式二 obj = models.Publisher(name=pub_name) obj.save()
删除
pk = request.GET.get(‘pk‘) query = models.Publisher.objects.filter(pk=pk) # 对象列表 query.delete() # 通过queryset 删除 query[0].delete() # 通过单独的对象 删除
修改
obj = models.Publisher.objects.filter(pk=pk).first() # 对象列表中第一个对象 obj.name = pub_name # 内存中修改 obj.save() # 提交
3.request和response对象
request对象 所有客户端请求数据集合,是一个对象,里面有各种方法 request.GET.get(‘username‘) 其中GET获取到的是字典 request.POST.get(‘username‘) 其中POST获取到的是字典 request.scheme 代表请求的方式 https/http request.path 请求的路径 /login/index.html request.encoding 提交的编码方式 request。COOKIES 包含所有的cookie request.META 一个标准的pyton字典,包含http首部 reuqest.user 一个AUTH_USER_MODEL类型的对象,表示当前登录的用户 request.session 一个可读可写的字典对象,表示当前会话
name = request.GET.get(‘username‘)
request.GET:是一个数组,里面有所有客户端请求数据集合
get(‘username‘,‘xxxx‘):是数组的get方法,如果没有会报错,一般可以设置默认值xxxx
4.models.py里面的__str__方法的使用
from django.db import models # Create your models here. class Publish(models.Model): pid = models.AutoField(primary_key=True) pname = models.CharField(max_length=32,unique=True) paddress = models.CharField(max_length=64)
def __str__(self): return " ".format(self.pid,self.pname,self.paddress)
很多时候我们自己编写一个类,在将它的实例在终端上打印或查看的时候,我们往往会看到一个不太满意的结果。
类默认转化的字符串基本没有我们想要的一些东西,仅仅包含了类的名称以及实例的 ID (理解为 Python 对象的内存地址即可)。虽说这总比没有好,但确实是没什么用处啊。
class user():
def __init__(self,name,age):
self.name = name
self.age = age
def __str__(self):
return ‘今年岁‘.format(self.name,self.age)
类的 __str__ 方法会在某些需要将对象转为字符串的时候被调用
lala = user(‘kobe‘,18) ---> 如果不加上__str__()的话,print(lala)会打印出实力化的地址,加上的话会打印出‘kobe今年18岁‘
pass
# 不管怎么写都能拿到主键的名字
以上是关于django基础2的主要内容,如果未能解决你的问题,请参考以下文章
59 Django基础三件套 , 模板{{}}语言 , 程序连mysql Django项目app Django中ORM的使用
Django 2021年最新版教程2Django项目目录结构中各文件的作用