python学习

python--Django学习过程备忘

2020-11-28  本文已影响0人  小阿六Minasix

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>
上一篇下一篇

猜你喜欢

热点阅读