python-django(二)

django的基本使用

 

ORM框架(django内置ORM框架)

  • ORM框架可以将类和数据表对应起来,只需要通过类和对象就可以对数据表进行操作;根据设计的类生成数据库中的表。

模型类

  • 模型类定义在models.py文件中,继承自models.Model类。
from django.db import models

class UserInfo(models.Model):
    user_name= models.CharField(max_length=5)
    def __str__(self):
        return self.user_name
  • 生成迁移文件命令:

        python manage.py makemigrations

  • 根据迁移文件创建表:

        python manage.py migrate

        数据表名默认为<app_name> _<classname>

定义属性

        属性=models.字段类型(选项)   

字段类型

使用时需要引入django.db.models包,字段类型如下:

  • AutoField:自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性。
  • BooleanField:布尔字段,值为True或False。
  • NullBooleanField:支持Null、True、False三种值。
  • CharField(max_length=字符长度):字符串。
    • 参数max_length表示最大字符个数。
  • TextField:大文本字段,一般超过4000个字符时使用。
  • IntegerField:整数。
  • DecimalField(max_digits=None, decimal_places=None):十进制浮点数。
    • 参数max_digits表示总位数。
    • 参数decimal_places表示小数位数。
  • FloatField:浮点数。
  • DateField[auto_now=False, auto_now_add=False]):日期。
    • 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false。
    • 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false。
    • 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误。
  • TimeField:时间,参数同DateField。
  • DateTimeField:日期时间,参数同DateField。
  • FileField:上传文件字段。
  • ImageField:继承于FileField,对上传的内容进行校验,确保是有效的图片。

选项

通过选项实现对字段的约束,选项如下:

  • null:如果为True,表示允许为空,默认值是False。
  • blank:如果为True,则该字段允许为空白,默认值是False。
  • db_column:字段的名称,如果未指定,则使用属性的名称。
  • db_index:若值为True, 则在表中会为此字段创建索引,默认值是False。
  • default:默认值。
  • primary_key:若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用。
  • unique:如果为True, 这个字段在表中必须有唯一值,默认值是False。

后台管理

  1. 本地化

        修改settings.py

LANGUAGE_CODE = 'zh-hans' #使用中国语言
TIME_ZONE = 'Asia/Shanghai' #使用中国上海时间

      2.创建管理员

        python manage.py createsuperuser

      3.注册模型类

        在admin.py中注册模型类

from django.contrib import admin
from app_name.models import UserInfo

admin.site.register(UserInfo)

      4.自定义后台管理

  • 属性list_display表示要显示哪些属性
class UserInfoAdmin(admin.ModelAdmin):
    list_display = ['user_id', 'user_age']

视图

1.定义视图函数

from django.http import HttpResponse

def helloworld(request):
    return HttpResponse("helloworld")


2.配置URLconf

  • 在app里新建urls.py
from django.conf.urls import url
from app_name import views
urlpatterns = [
    url(r'^$', views.index),     # 严格匹配开头和结尾
]
  • 配置项目的urls文件
url(r'^', include('app_name.urls')),
  • 首先在项目的urls文件进行匹配,成功后去掉匹配字符串,剩余字符串再去对应的app里urls文件进行匹配。
  • 配置url有两种语法格式:

        a)url(正则表达式,视图函数名)

        b)url(正则表达式,include(应用中的urls文件))

模板

1.创建模板

  • 在项目文件夹下创建templates文件夹。
  • 项目settings文件中,TEMPLATES = [{'DIRS':[ os.path.join(BASE_DIR,'templates')]}] ,设置模板文件目录。
  • 为了应用之间模板文件不混淆,每个app在templates文件夹下创建一个文件夹,在对应文件夹下添加html文件。

2.定义模板

<html>
<head>
    <title>用户列表</title>
</head>
<body>
<h1>{{title}}</h1> 
{%for i in list%}       # 在模板中编写代码段语法 {%代码段%}
{{i}}<br>               # {{i}} 定义变量名 i ,变量可能是从视图中传递过来的,也可能是在模板中定义的。
{%endfor%}
</body>
</html>

3.视图调用模板

  • 加载模板文件
  • 定义模板上下文(向模板传递数据)
  • 模板渲染
from django.shortcuts import render
# 方法render包含3个参数:

# 第一个参数为request对象
# 第二个参数为模板文件路径
# 第三个参数为字典,表示向模板中传递的上下文数据

def index(request):
    context={'title':'用户列表','list':range(10)}
    return render(request,'app_name/index.html',context)
  • 模板语言
# 1.模板变量:{{变量}}
# 2.标签:
    # for标签语法如下:
        {%for item in 列表%}     # 循环逻辑
        
        {{forloop.counter}}      # 表示当前是第几次循环,从1开始
        {%empty%}                # 列表为空或不存在时执行此逻辑
        
        {%endfor%}
     # if标签语法如下:
        {%if ...%}
        # 逻辑1
        {%elif ...%}
        # 逻辑2
        {%else%}
        # 逻辑3
        {%endif%}
# 3.比较运算符:运算符左右两侧不能紧挨变量或常量,必须有空格。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值