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的使用

2Django实战第2天:app设计

Python入门自学进阶-Web框架——2Django初识

Django 2021年最新版教程2Django项目目录结构中各文件的作用

60 django- cookie和session 以及中间件

Django框架