码迷,mamicode.com
首页 > 其他好文 > 详细

django基础2

时间:2019-08-23 22:20:13      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:prim   creat   list   uniq   meta   cookies   类型   模板渲染   details   

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

标签:prim   creat   list   uniq   meta   cookies   类型   模板渲染   details   

原文地址:https://www.cnblogs.com/p0st/p/11402791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!