免费做网站怎么做网站,内部网站制作,软件商店下载最新版,桂林八桂网文章目录 1 概述1.1 安装 django1.2 创建 django 项目1.3 创建 app 2 启动 Django2.1 settings.py#xff1a;注册 app2.2 view.py#xff1a;URL和视图对应2.3 启动 Django2.4 访问 3 快速上手3.1 templates#xff1a;html 模板3.2 static#xff1a;静态文件3.3 模板语法… 文章目录 1 概述1.1 安装 django1.2 创建 django 项目1.3 创建 app 2 启动 Django2.1 settings.py注册 app2.2 view.pyURL和视图对应2.3 启动 Django2.4 访问 3 快速上手3.1 templateshtml 模板3.2 static静态文件3.3 模板语法3.4 请求和响应3.5 表单 1 概述
1.1 安装 django pip install django1.2 创建 django 项目
[File] - [New Project...] - [Django] - 设置 Location 和 解释器 - [create] 固定不用动的文件 asgi.py接收网络请求异步 wsgi.py接收网络请求同步 重要需要经常操作的文件 urls.pyURL和函数的对应关系 settings.py项目配置 1.3 创建 app
命令窗口执行命令python manage.py startapp app01其中 app01 为自定义项目名 固定不用动的文件 admin.py后台管理 apps.pyapp启动类 migrations数据库变更记录 test.py单元测试 重要经常操作的文件 models.py对数据库操作 views.py函数对应上述 1.2 Django 项目中的 urls.py 文件 2 启动 Django
2.1 settings.py注册 app 2.2 view.pyURL和视图对应 2.3 启动 Django # 指定IP地址和端口python manage.py runserver 127.0.0.1:80802.4 访问 3 快速上手
3.1 templateshtml 模板 3.2 static静态文件 3.3 模板语法 views.py
from django.shortcuts import render, HttpResponse# Create your views here.
# 入参 request 是必选项
def index(request):return HttpResponse(Hello World!)def user_list(request):# 对应 settings.py 中的 DIRS: [os.path.join(BASE_DIR, templates)]# 若 settings.py 中设为 DIRS: [] 则表示 app 目录下的 templatesname 张三roles [超级管理员, 管理员, 用户]user_info {name: 张三, salary: 10000, role: 超级管理员}data_list [{name: 张三, salary: 10000, role: 超级管理员},{name: 李四, salary: 30000, role: 管理员},{name: 王五, salary: 20000, role: 用户}]# k1-k4自定义的 keyname、roles.. 为上述定义的值return render(request, user_list.html, {k1: name, k2: roles, k3: user_info, k4: data_list})user_list.html
{% load static %} !-- 导入 static 文件 --!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body
h1 模板语法 /h1
div{{ k1 }}/div
hr/
!-- k2: 原样显示k2.显示某项 --
!-- 数组 --
div{{ k2 }}/div
div{{ k2.0 }}/div
div{{ k2.1 }}/div
div{{ k2.2 }}/div
div{% for item in k2 %}span{{ item }}/span{% endfor %}
/div
hr/
!-- 字典 --
{{ k3 }}
{{ k3.name }}
{{ k3.salary }}
{{ k3.role }}
ul{% for key, value in k3.items %}li{{ key }} {{ value }}/li{% endfor %}
/ul
hr/
!-- 复合结构 --
{{ k4 }}
{{ k4.0 }}
{{ k4.0.name }}
{% for item in k4 %}div{{ item.name }} : {{ item.salary }}/div
{% endfor %}
hr/
!-- 条件判断 --
{% if k1 张三 %}h1 我是张三 /h1
{% elif k1 李四 %}h1 我是李四 /h1
{% else %}h1 我是.. /h1
{% endif %}
/body
/html浏览器效果
3.4 请求和响应
view.py
from django.shortcuts import render, HttpResponse, redirect# Create your views here.
def request_response(request):# request 是一个对象封装了用户发送过来的所有请求相关数据# 1.【请求】获取请求的方式 GET/POSTprint(request.method)# 2.【请求】GET在 URL 上传递值速度快但用户可见# 若浏览器输入http://127.0.0.1:8000/request_response?n1m2# 则此处输出值QueryDict: {n: [1], m: [2]}print(request.GET)# 3.【请求】POST在 请求体 中传递值用户不可见print(request.POST)# 4.【响应】将字符串的内容返回给请求者# return HttpResponse(返回内容)# 5.【响应】读取HTML的内容 渲染替换#return render(request, request_response.html, {title: 我来了})# 6.【响应】重定向return redirect(https:www.baidu.com)templates 目录下新建 request_response.html
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
bodyh1 某些请求 {{ title }}/h1
/body
/htmlurls.py
from django.urls import pathfrom app01 import viewsurlpatterns [# path(admin/, admin.site.urls),path(index/, views.index),path(user/list, views.user_list),# 请求和响应path(request_response, views.request_response)
]3.5 表单
views.py
from django.shortcuts import render, HttpResponse, redirect# Create your views here.
def login(request):if request.method GET:return render(request, login.html)# 如果是 POST 请求则获取用户提交的数据userName request.POST.get(user)passWord request.POST.get(pwd)if userName admin and passWord 123:return HttpResponse(登录成功)else:return render(request, login.html, {error_msg: 用户名或密码错误})templates 目录下新建 login.html
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body
h1用户登录/h1
form action/login/ methodpost{% csrf_token %}input typetext nameuser placeholder用户名input typepassword namepwd placeholder密码input typesubmit value提交 {{ error_msg}}
/form
/body
/htmlurls.py from django.contrib import admin
from django.urls import pathfrom app01 import viewsurlpatterns [# path(admin/, admin.site.urls),# 用户登录path(login/, views.login)
]