django的下载与使用

下载安装

  1. 命令行

    pip3 install django==1.11.23 -i https://pypi.tuna.tsinghua.edu.cn/simple

  2. pycharm

    file -- > settings --> Project Interpreter --> + --> 选择响应的版本下载

创建项目

  1. 命令行

    先建立好本地文件夹,然后再本文件夹下执行django-admin startproject 项目名称

  2. pycharm

    flie ---> new_project ---> django --->项目路径 --->选解释器

目录说明

 mysite/
 ├── manage.py  # 管理文件,整个Django项目的启动文件
 └── mysite  # 项目目录
    ├── __init__.py
    ├── settings.py  # 配置
    ├── urls.py  # 路由 --> URL和函数的对应关系
    └── wsgi.py  # runserver命令就使用wsgiref模块做简单的web server

启动项目

  1. 命令行

    ** 切换到项目根目录  **
    
    python manage.py runserver # 127.0.0.1:8000  默认
    
    python manage.py runserver 80 # 127.0.0.1:80  修改端口
    
    python manage.py runserver 0.0.0.0:80 # 0.0.0.0:80 修改IP和端口允许所有主机通过80端口进行访问
  2. pycharm

    点绿三角启动带有dj标记的项目,不是简单的右键运行文件

三件套

导入

from django.shortcuts import HttpResponse, render, redirect

HttpResponse

内部传入一个字符串参数,返回给浏览器。

 def index(request):
    # 业务逻辑代码
    return HttpResponse("OK")

render

除request参数外还接受一个待渲染的模板文件和一个保存具体数据的字典参数。

将数据填充进模板文件,最后把结果返回给浏览器。

 def index(request):
    # 业务逻辑代码
    return render(request, "index.html", {"name": "alex", "hobby": ["烫头", "泡吧"]})

redirect

接受一个URL参数,表示跳转到指定的URL。

 def index(request):
    # 业务逻辑代码
    return redirect("/home/")

简单使用

urls.py写url 和函数的对应关系 写函数

 from django.shortcuts import HttpResponse, render
 ?
 def index(request):
    return HttpResponse(‘这里是index‘)   # 返回字符串
 ?
 def home(request):
    return render(request, ‘home.html‘)   # 返回html页面
 ?
 urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^index/‘, index),   # 路径和函数的对应关系
    url(r‘^home/‘, home),
 ]

静态文件配置

在项目根目录存放静态文件夹,静态文件夹下可以存放css、js、img等项目中公用的静态文件或是文件夹。如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以。

 在settings.py中设置
 ?
 STATIC_URL = ‘/static/‘  # 别名,引入静态文件时以static开头,这里的static不是代表的目录
 ?
 STATICFILES_DIRS = [
    os.path.join(BASE_DIR, ‘static‘)
 ]
 ?
 【举例】
 STATICFILES_DIRS = [               #按照列表的顺序进行查找
    os.path.join(BASE_DIR, ‘x1‘),
    os.path.join(BASE_DIR, ‘static‘),
    os.path.join(BASE_DIR, ‘x2‘)
 ]  

MIDDLEWARE中间件

如果是提交post请求,注释掉settings.py下的MIDDLEWARE属性的csrf中间件 ‘django.middleware.csrf.CsrfViewMiddleware‘,用改解决请求时出现403 错误

MIDDLEWARE = [
    ‘django.middleware.security.SecurityMiddleware‘,
    ‘django.contrib.sessions.middleware.SessionMiddleware‘,
    ‘django.middleware.common.CommonMiddleware‘,
    # ‘django.middleware.csrf.CsrfViewMiddleware‘,
    ‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
    ‘django.contrib.messages.middleware.MessageMiddleware‘,
    ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
 ]

TEMPLATES模板路径设置

settings.pyTEMPLATES属性中,设置公用temples路径,是指到 BASE_DIR/templates文件夹中去取模板

 TEMPLATES = [
    {
        ‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,
        ‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘)]  #是指到  BASE_DIR/templates文件夹中去取模板
        ,
 ]

后边接触到app后,还可以在app中建立templates,是app专用的。

登录表单设置

form表单

  1. action 提交的地址,默认是往本地址提交数据 ;method 请求方法,默认是get,如果是实现认证功能的话,需要手动改成post
  2. input 需要有name ,用于提交数据时数据以可知的键值对方式传输,便于进行数据处理;required=""表示是必填项
  3. submit 提交的按钮或者input
  4. 前端校验,在form标签中使用novalidate
  5. django 中可以在函数中使用request.method从看看浏览器提交的请求方式;使用request.POST可以获取form提交的数据,获取的是一个字典
  6. 重定向:从django.shortcuts中导入redirect,让请求的页面跳转到其他指定的页面。redirect("https://cn.bing.com")跳转到指定的网页;redirect("/home/")跳转到本地的页面,前边的/必须要写,不然会加到前边的地址上;

前端模板

APP

将urls.py中定义的功能分类存放

新建APP

命令行:

python manage.py startapp app名称

pycharm中:

tools --> run manage.py task --> startapp app名

注册APP

在settings中进行注册

 INSTALLED_APPS = [
    ‘app01‘,  # 方法一
    ‘app01.apps.App01Config‘,  # 推荐写法
 ]

在urls.py中导入

从app中把函数或者功能导入到urls.py中

from app01 import views

目录

migrations文件夹存放迁移文件用

admin.py django admin

apps.py app的信息

models.py 模型 model 跟数据库有关

views.py 写函数和功能

ORM

Object Relational Mapping,对象关系映射,为了解决面向对象与关系数据库存在的互不匹配的技术。

ORM的优势

ORM解决的主要问题是对象和关系的映射。它通常将一个类和一张表一一对应,类的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。

ORM提供了对数据库的映射,不用直接编写SQL代码,只需操作对象就能对数据库操作数据。

让软件开发人员专注于业务逻辑的处理,提高了开发效率。

ORM的劣势

ORM的缺点是会在一定程度上牺牲程序的执行效率。

ORM的操作是有限的,也就是ORM定义好的操作是可以完成的,一些复杂的查询操作是完成不了。

ORM用多了SQL语句就不会写了,关系数据库相关技能退化...

使用mysql数据库的流程

  1. 创建一个mysql数据库;
  2. 在settings.py中配置数据库:
    DATABASES = {
        ‘default‘: {
            ‘ENGINE‘: ‘django.db.backends.mysql‘,   # 引擎
            ‘NAME‘: ‘数据库名‘,   # 数据库名称
            ‘HOST‘: ‘IP地址‘,      # IP
            ‘PORT‘: 3306,   # 端口号
            ‘USER‘: ‘用户名‘,       # 用户名
            ‘PASSWORD‘: ‘密码‘      # 密码
        }
     }
  3. 使用pymysql模块连接mysql数据库。

    写在与settings同级目录下的__init__.py

     import pymysql
     pymysql.install_as_MySQLdb()
  4. 写对应关系,在app下的models.py中写类,定义数据表。
     class User(models.Model):
        username = models.CharField(max_length=32)  # username  varchar(32)
        password = models.CharField(max_length=32)  # password  varchar(32)
  5. 执行数据库迁移的命令
     python36 manage.py  makemigrations   # 记录下models.py的变更记录
     ?
     python manage.py migrate   # 变更记录同步到数据库
  6. 所有要实现的功能放在views.py中,如果要用数据库,应该将数据库的models导入到该文件
     from django.shortcuts import render,redirect
     from app01 import models
     ?
     def login(request):
        if request.method == ‘GET‘:
            return render(request,‘login.html‘)
     ?
        elif request.method == "POST":
            # 获取提交数据
            user = request.POST.get("username")
            pwd = request.POST.get("password")
            # ret = models.inf.objects.get(username=user,password=pwd) # get方法有一个特点是查不到数据或者查到多个数据时,会报错
            ret = models.inf.objects.filter(username=user,password=pwd)
            if ret:
                return redirect("/home/")
            else:
                return render(request,‘login.html‘)
     ?
     def home(request):
        return render(request,‘home.html‘)

注意

 查询操作时
 ret = models.User.objects.get(username=user, ) # 找不到就报错  找到多个也报错
 ret = models.User.objects.filter(username=user, )  # 过滤筛选,获取满足条件的所有的对象,存放在列表中

常用数据类型

常用字段

AutoField

自增的整形字段,必填参数primary_key=True,则成为数据库的主键。无该字段时,django自动创建。

一个model不能有两个AutoField字段。

IntegerField

一个整数类型。数值的范围是 -2147483648 ~ 2147483647。

CharField

字符类型,必须提供max_length参数。max_length表示字符的长度。

DateField

日期类型,日期格式为YYYY-MM-DD,相当于Python中的datetime.date的实例。

参数:

  • auto_now:每次修改时修改为当前日期时间。
  • auto_now_add:新创建对象时自动添加当前日期时间。

【注意】auto_now和auto_now_add和default参数是互斥的,不能同时设置。

DatetimeField

日期时间字段,格式为YYYY-MM-DD HH:MM:ss[.uuuuuu],相当于Python中的datetime.datetime的实例。

更多具体类型

更多

  1 AutoField(Field)
  2         - int自增列,必须填入参数 primary_key=True
  3  ?
  4  BigAutoField(AutoField)
  5         - bigint自增列,必须填入参数 primary_key=True
  6  ?
  7         注:当model中如果没有自增列,则自动会创建一个列名为id的列
  8  【举例】
  9   from django.db import models
 10  ?
 11   class UserInfo(models.Model):
 12             # 自动创建一个列名为id的且为自增的整数列
 13             username = models.CharField(max_length=32)
 14  ?
 15       class Group(models.Model):
 16             # 自定义自增列
 17           nid = models.AutoField(primary_key=True)
 18           name = models.CharField(max_length=32)
 19  ?
 20  SmallIntegerField(IntegerField):
 21         - 小整数 -32768 ~ 32767
 22  ?
 23  PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
 24         - 正小整数 0 ~ 32767
 25  ?
 26  IntegerField(Field)
 27         - 整数列(有符号的) -2147483648 ~ 2147483647
 28  ?
 29  PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
 30         - 正整数 0 ~ 2147483647
 31  ?
 32  BigIntegerField(IntegerField):
 33         - 长整型(有符号的) -9223372036854775808 ~ 9223372036854775807
 34  ?
 35  BooleanField(Field)
 36         - 布尔值类型
 37  ?
 38  NullBooleanField(Field):
 39         - 可以为空的布尔值
 40  ?
 41  CharField(Field)
 42         - 字符类型
 43         - 必须提供max_length参数, max_length表示字符长度
 44  ?
 45  TextField(Field)
 46         - 文本类型
 47  ?
 48  EmailField(CharField):
 49         - 字符串类型,Django Admin以及ModelForm中提供验证机制
 50  ?
 51  IPAddressField(Field)
 52         - 字符串类型,Django Admin以及ModelForm中提供验证 IPV4 机制
 53  ?
 54  GenericIPAddressField(Field)
 55         - 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6
 56         - 参数:
 57       protocol,用于指定Ipv4或Ipv6, ‘both‘,"ipv4","ipv6"
 58       unpack_ipv4, 如果指定为True,则输入::ffff:192.0.2.1时候,可解析为192.0.2.1,开启此功能,需要protocol="both"
 59  ?
 60  URLField(CharField)
 61         - 字符串类型,Django Admin以及ModelForm中提供验证 URL
 62  ?
 63  SlugField(CharField)
 64         - 字符串类型,Django Admin以及ModelForm中提供验证支持 字母、数字、下划线、连接符(减号)
 65  ?
 66  CommaSeparatedIntegerField(CharField)
 67         - 字符串类型,格式必须为逗号分割的数字
 68  ?
 69  UUIDField(Field)
 70         - 字符串类型,Django Admin以及ModelForm中提供对UUID格式的验证
 71  ?
 72  FilePathField(Field)
 73         - 字符串,Django Admin以及ModelForm中提供读取文件夹下文件的功能
 74         - 参数:
 75                 path,                     文件夹路径
 76                 match=None,               正则匹配
 77                 recursive=False,           递归下面的文件夹
 78                 allow_files=True,         允许文件
 79                 allow_folders=False,       允许文件夹
 80  ?
 81  FileField(Field)
 82         - 字符串,路径保存在数据库,文件上传到指定目录
 83         - 参数:
 84             upload_to = ""     上传文件的保存路径
 85             storage = None     存储组件,默认django.core.files.storage.FileSystemStorage
 86  ?
 87  ImageField(FileField)
 88         - 字符串,路径保存在数据库,文件上传到指定目录
 89         - 参数:
 90             upload_to = ""     上传文件的保存路径
 91             storage = None     存储组件,默认django.core.files.storage.FileSystemStorage
 92             width_field=None,   上传图片的高度保存的数据库字段名(字符串)
 93             height_field=None   上传图片的宽度保存的数据库字段名(字符串)
 94  ?
 95  DateTimeField(DateField)
 96         - 日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
 97  ?
 98  DateField(DateTimeCheckMixin, Field)
 99         - 日期格式     YYYY-MM-DD
100  ?
101  TimeField(DateTimeCheckMixin, Field)
102         - 时间格式     HH:MM[:ss[.uuuuuu]]
103  ?
104  DurationField(Field)
105         - 长整数,时间间隔,数据库中按照bigint存储,ORM中获取的值为datetime.timedelta类型
106  ?
107  FloatField(Field)
108         - 浮点型
109  ?
110  DecimalField(Field)
111         - 10进制小数
112         - 参数:
113             max_digits,小数总长度
114             decimal_places,小数位长度
115  ?
116  BinaryField(Field)
117         - 二进制类型

数据类型

 ?

原文地址:https://www.cnblogs.com/jjzz1234/p/11438309.html

时间: 2024-10-11 00:55:52

django的下载与使用的相关文章

django 中下载文件与下载保存为excel

一.django 中下载文件 在实际的项目中很多时候需要用到下载功能,如导excel.pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍django中的文件下载. 1.前端 实现方式:a标签+响应头信息(当然你可以选择form实现) <div class="col-md-4"><a href="{% url 'download' %}" rel="external nofollow

第一步 django的下载安装

django是python众多web框架中比较有名的一个,以大包大揽功能俱全而著名.但作为重量级的web框架,难免性能上回有所损失,不过由于其封装了各种API,在开发的时候会便利许多.所以也是深受欢迎,至于性能上的损失,可以在开发完成后在用tornado进行封装,多少能提升些许. 正是因为开发上的便利,所以我们也来学习如果使用django.那么第一步安装django,而django作为python的web框架,肯定要先安装python. 所以总结django的安装步骤: 1. 安装python,

Django 之 下载文件

法I: views.py 1 #encoding:utf-8 2 import os 3 4 from django.core.servers.basehttp import FileWrapper 5 from django.http import HttpResponse 6 7 path = '/tmp/' 8 def downloader(request): 9 filename_tmp = 'test.tmp' # test.tmp为将要被下载的文件名 10 filename = os

Django压缩包下载

前言 系统有的时候需要下载一些内容到本地,这些内容原来可能就是在服务器上某个位置或者离散分布,文件内容格式多样而且大小不一,本文将一步步来解决这些问题. 本文环境: Python 2.7.10 Django 1.11 zip-file 安装 执行pip安装 pip install zipfile python自带,不需要安装 打包完整目录 下面代码将完全打包当前目录,保存为abcd.zip文件里,存放到当前目录 存放在当前目录有个问题:压缩包里会再次包含压缩包,大小为0.所以可以将压缩包放到另外

web框架以及django的下载

1.web框架的使用流程 1.urls:定义映射关系("time",time) 2.创建视图函数: def time(evsion): 业务逻辑 3.涉及到数据库,使用models 2.MVC: M:model 和数据库打交道 V:view 视图(html文件) C:controller 控制台(url的分发和试图函数的逻辑处理) 3.MTV: M:model 与数据库打交道 T:templates 存放HTML文件 V:view 视图函数(逻辑处理) djanjo的下载: pip 

Django的下载和基本指令

1.下载Django pip3  install  django     #不写版本号的话,默认使下载最新版的django pip3  install   django == 2.1.2    #指定版本号 2.创建一个Django  project(django-admin.exe所在的目录要加入环境变量) django-admin startproject  mysite 注意:此命令在那个目录下执行,django目录就建在了那个目录下,执行命令后,当前的 目录会生成mysite工程,目录结

Django框架下载与Django框架初识

Django下载安装 #下载 pip3 install django==1.11.9 pip3 install django==1.11.9 -i http://xxxxxx 指定源 #创建项目 django-admin startproject mysite 创建了一个名为"mysite"的Django 项目 #启动项目 python manage.py runserver 默认是127.0.0.1:8000 python manage.py runserver 127.0.0.1

python框架Django的下载安装及使用框架创建的第一个项目

如果还未下载Django,可以使用以下链接:https://www.djangoproject.com/download/ 下载安装解压Django压缩包后,将其压缩后的文件跟python安装目录放在同一个根目录,以下介绍两种方式安装: 进入 Django 目录,执行python setup.py install,开始安装,Django将要被安装到Python的Lib下site-packages: 打开cmd,使用已经配置好环境变量的python命令pip install Django安装,之后

django的下载安装与简单应用

Django下载安装与简单实例 Django官网下载页面 1.下载Django: pycharm中下载 pycham中装模块的地方安装 或界面下Terminal安装File | Settings | Project: tushu | Project Interpreter pip3下载 pip3 install django==1.11.9 -i http://xxxxxx 指定源 2.创建一个django project 创建项目 django-admin startproject mysit