美文网首页python学习
python--Django学习过程备忘

python--Django学习过程备忘

作者: 小阿六Minasix | 来源:发表于2020-11-28 17:21 被阅读0次

    1.原理

    1589777036-2760-fs1oSv4dOWAwC5yW.png

    2.创建项目

    命令行输入:

    django-admin startproject xxxx
    
    image.png

    目录结构如图

    3.运行项目

    命令行输入:

    python manage.py runserver
    

    浏览器中打开网址即可

    4.setting文件配置

    ①将语言环境设置成中文

    LANGUAGE_CODE = 'zh-Hans'
    

    ②将数据库改成mysql(对象关系映射(Object Relational Mapping,简称 ORM )无法操作到数据库级别,只能操作到数据表,所以要先自己建库)

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'factory',
            'USER':'root',
            'PASSWORD':'123456',
            'HOST':'127.0.0.1',
            'PORT':'3306',
        }
    }
    

    在项目根目录下中的init.py文件中添加代码:

    import pymysql
    pymysql.install_as_MySQLdb()
    
    

    这时候再打开项目会报错,需要在数据库中建factory数据库,并将Django架构自带的应用的数据库迁移到库里(方法见5)
    ③创建tamplate文件夹后要在这里声明

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')],#这一句如果没有会报错:django.template.exceptions.TemplateDoesNotExist: seach.html
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    

    5.将INSTALLED_APPS中应用的数据库迁移到库里

    (Django架构自带的)

    python manage.py makemigrations  #创建目录和迁移文件
    python manage.py migrate               #迁移数据库,在自己的库里创建表格
    

    (自建应用 app1)

    python manage.py makemigrations app1 #创建目录和迁移文件
    python manage.py migrate  app1             #迁移数据库,在自己的库里创建表格
    

    6.创建后台超级管理员

    python manage.py createsuperuser --username=admin --email=954979953@qq.com
    

    创建完成后在数据库的auth_user表中可以看到创建的用户名

    7.查看后台管理界面

    http://127.0.0.1:8000/admin/

    image.png
    若显示不正常,https://blog.csdn.net/qq_34919833/article/details/108041315

    7.1设置其他主机可以用ip+端口访问

    在setting.py中设置

    ALLOWED_HOSTS = ['192.168.0.106','127.0.0.1']
    

    必须使用0.0.0.0启动

     python manage.py runserver 0.0.0.0:8000
    
    image.png

    8.创建应用

    python manage.py startapp app1
    
    image.png

    结构如图
    记得在setting.py中注册

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app1'
    ]
    

    9.生成当前项目依赖清单request-ments.txt

    根目录运行:

    pip freeze >requirements.txt
    

    当项目移到别处部署时,重建项目依赖:

    pip install -r requirements.txt
    

    10.模型操作

    https://www.runoob.com/django/django-model.html

    11.视图使用

    1.在项目下的urls.py中指定应用下的urls.py,实现应用和项目的解耦。具体如下:

    项目urls.py:

    path('product/', include('product_md.urls')),  
      #指定127.0.0.1:8000/product/xxx的路径都由具体应用的urls.py指定
    

    应用(product)下urls.py

    path('hello/', views.hello), 
    
    2.HttpRequest对象

    每当请求来的时候,Django会创建一个携带请求元数据的HttpRequest对象,传递给视图函数的第一个参数。
    属性和方法
    ①method属性
    标识请求使用的HTTP方法,取值为'GET' 'POST' 'PUT'等
    @csrf_exempt 跨域请求
    @require_http_methods(["GET","POST"]) 允许的请求方法
    @require_GET 只允许GET方法
    ②scheme属性
    标识请求的协议类型,取值 http https
    ③path属性
    返回当前请求页面的路径,但是不包括协议类型和域名
    如http:127.0.0.1:8000/post/hello/
    path返回的是/post/hello/
    ④GET
    类字典对象,包含GET请求中的所有参数
    如http:127.0.0.1:8000/post/hello/?a=1&b=2&c=3
    用法一 requset.GET['a'] 如果a不存在则会抛出异常
    用法二 requset.GET('d',0) 如果d不存在则返回0,更安全
    ⑤POST
    与get类似,保存的是POST请求中提交的表单数据
    用法与GET一样
    若表单内容有上传文件时,文件相关信息不会保存在POST,而是存在FILES中
    ⑥FILES
    类字典对象
    其中的每个键是<input type="file"name=''"/>中name的值,
    每个值都是一个Uploadfile
    ⑦COOKIES
    字典对象,键和值都是字符串
    ⑧META
    字典对象
    包含所有HTTP头部信息
    ⑨user
    标识当前登录用户的AUTH_USER_MODEL实例,是Django用户系统中的User(auth.User)类型

    3.HttpResponse对象

    在视图中主动创建并返回

    ①status_code
    用于标识一次请求的状态,取值200 404 500(服务器内部错误)
    ②content
    存储相应内容的二进制字符串
    ③write方法
    向响应视图中添加响应数据

    https://www.runoob.com/django/django-views.html
    响应对象主要有三种形式:HttpResponse()、render()、redirect()。
    HttpResponse(): 返回文本,参数为字符串,字符串中写文本内容。如果参数为字符串里含有 html 标签,也可以渲染。
    render(): 返回文本,第一个参数为 request,第二个参数为字符串(页面名称),第三个参数为字典(可选参数,向页面传递的参数:键为页面参数名,值为views参数名)。
    redirect():重定向,跳转新页面。参数为字符串,字符串中填写页面路径。一般用于 form 表单提交后,跳转到新页面。
    render 和 redirect 是在 HttpResponse 的基础上进行了封装:
    render:底层返回的也是 HttpResponse 对象
    redirect:底层继承的是 HttpResponse 对象

    4.基于类的视图

    类视图可以利用不同的实例方法响应不同的HTTP请求方法,且可以用面向对象的技术奖代码分解成可重用的组件。

    12.模板

    Django 模板标签

    变量
    模板语法:
    view:{"HTML变量名" : "views变量名"}
    HTML:{{变量名}}
    HelloWorld/HelloWorld/views.py 文件代码:

    from django.shortcuts import render
    
    def runoob(request):
      views_name = "菜鸟教程"
      return  render(request,"runoob.html", {"name":views_name})
    

    templates 中的 runoob.html :

    <p>{{ name }}</p>
    

    相关文章

      网友评论

        本文标题:python--Django学习过程备忘

        本文链接:https://www.haomeiwen.com/subject/lcqcwktx.html