django第一章(django配置相关和简单的登录实例)
django下载
下载有两种方式,一个是命令行,一个是pycharm自带的。
1. 命令行 pip install django==1.11.18 -i https://pypi.douban.com/simple/2.pycharm
2.创建项目
1. 命令行
django-admin startproject 项目名
2.pycharm创建
3.启动项目
1. 命令行
切换到项目根目录 manage.py
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
2. pycharm
点击绿三角 切记不要右键启动
4.配置
看settings.py
TEMPLATES 模板 HTML
'DIRS': [os.path.join(BASE_DIR, 'templates')]
STATIC_URL = '/static/' # 别名
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
5.创建app
1. 命令行
python manage.py startapp app名称
migrations:迁移文件 数据库要用的时候要创建一个迁移文件,迁移文件就会放到这个里面,将来通过这个迁移文件再去数据库里面再去做具体操作。 admin.py 是django提供的管理后台 apps.py 这个是app里面相关的 models.py ORM操作。写类的操作 tests.py 做单元测试或者其他东西 views.py 类似函数的东西写到这里
2. 注册APP
INSTALLED_APPS = [#'app01', 'app01.apps.App01Config' ## 推荐写法 ]
pycharm创建app方法
但是他只会给你创建不会给你注册,所以还是需要自己手动注册app:
6.urls.py
1.在views.py写函数,例如:index,后面必须接受一个参数,写一个形参 这个形参我们一般就规定叫:request ,为什么,django在执行这些内容的时候,它会把一个封装,一个request对象,就是给你请求相关的一个内容给你传过来,所以说这个起什么名字都行,但是我知道这个是和请求相关的东西,所以起名叫request,最后是一定要返回一个内容,我们这里返回一个HttpResponse对象,加()是实例化
2.导入app01项目的views模块
3.启动或者重启项目
4.访问
返回一个html页面(登录实例)
1.编写urls.py
urlpatterns = [url(r'^login/', views.login), ]
2.编写login登录函数,在views.py中添加
def login(request):# 返回一个页面return render(request,'login.html') #render是一个函数,第一个参数必须是request,第二个参数就是html文件的路径,因为模板html文件是在templates文件夹下,所以这里直接写就能补全了
3.编写login.html页面(简单版)
<body> <form action="" method="post"><p>用户名:<input type="text" name="user"></p><p>密码:<input type="password" name="pwd"></p> {# <input type="submit" value="提交">#}<button>提交</button> </form> </body>
4.访问login页面
随便输入用户名和密码,点击提交
这个页面是django提供的跨站请求伪造的保护机制。我们修改settings.py,我们先临时注释掉这个中间件,到后面标签的时候,才打开它
要提交POST请求 注释中间件中的 # 'django.middleware.csrf.CsrfViewMiddleware', 不用重启,再次访问。
点击提交,发现不再出现刚才的页面。
5.接收数据,判断账号密码
views.py
from django.shortcuts import render,HttpResponse,redirect# Create your views here.def index(request):return HttpResponse('<h1>o98k</h1>')def login(request):# print(request.method,type(request.method))if request.method == 'POST':# 获取提交的数据# print(request.POST) #<QueryDict: {'user': ['alex'], 'pwd': ['123']}>user = request.POST.get('user')pwd = request.POST.get('pwd')print(user,type(user)) #alex <class 'str'> 类型是字符集,用get直接获取到里面的值。# 用户名密码校验if user == 'alex' and pwd == 'alexdsb':# return redirect('https://www.baidu.com') #redirect是重定向,这是一个函数,import导入它return redirect('/index/') #这个/一定要带上,不带上的话,路径会拼接成了/login/index #Location: /index/# 返回一个页面return render(request,'login.html') #render是一个函数,第一个参数必须是request,第二个参数就是html文件的路径
如果return不加/路径会变成
但是我们发现是访问到了。是因为我们在urls.py中拼接路径那里写的不严谨。
这里是支持正则的,我们加上$,再来看,发现404了。
梳理流程
返回错误的页面,优化登录实例
jquery22:http://www.jq22.com
复制里面的url,copy里面的body代码
修改为
<!DOCTYPE html> <html lang="zh-CN"> <head><meta http-equiv="content-Type" charset="UTF-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Title</title><link rel="stylesheet" href="/static/css/reset.css"><link rel="stylesheet" href="/static/css/style.css"> </head> {#<body>#} {##} {#<form action="" method="post">#} {# <p>#} {# 用户名: <input type="text" name="user">#} {# </p>#} {# <p>#} {# 密码: <input type="password" name="pwd">#} {# </p>#} {# <input type="submit" value="提交">#} {# {{ err_msg }}#} {# <button>提交</button>#} {#</form>#} {##} {##} {#</body>#} <body> <div id="particles-js"><div class="login"><div class="login-top">登录</div><form action="" method="post"><div class="login-center clearfix"><div class="login-center-img"><img src="/static/imgs/name.png"></div><div class="login-center-input"><input type="text" name="user" value="admin" placeholder="请输入您的用户名" onfocus="this.placeholder=''"onblur="this.placeholder='请输入您的用户名'"><div class="login-center-input-text">用户名</div></div></div><div class="login-center clearfix"><div class="login-center-img"><img src="/static/imgs/password.png"></div><div class="login-center-input"><input type="password" name="pwd" value="" placeholder="请输入您的密码" onfocus="this.placeholder=''"onblur="this.placeholder='请输入您的密码'"><div class="login-center-input-text">密码</div></div></div><p style="text-align: center;color: red">{{ err_msg }}</p><div style="text-align: center"><button class="login-button">登陆</button></div></form></div><div class="sk-rotating-plane"></div><canvas class="particles-js-canvas-el" width="1343" height="177" style="width: 100%; height: 100%;"></canvas> </div><script src="/static/js/particles.min.js"></script> <script src="/static/js/app.js"></script> <script type="text/javascript">function hasClass(elem, cls) {cls = cls || '';if (cls.replace(/\s/g, '').length == 0) return false; //当cls没有参数时,返回falsereturn new RegExp(' ' + cls + ' ').test(' ' + elem.className + ' ');}function addClass(ele, cls) {if (!hasClass(ele, cls)) {ele.className = ele.className == '' ? cls : ele.className + ' ' + cls;}}function removeClass(ele, cls) {if (hasClass(ele, cls)) {var newClass = ' ' + ele.className.replace(/[\t\r\n]/g, '') + ' ';while (newClass.indexOf(' ' + cls + ' ') >= 0) {newClass = newClass.replace(' ' + cls + ' ', ' ');}ele.className = newClass.replace(/^\s+|\s+$/g, '');}}document.querySelector(".login-button").onclick = function () {addClass(document.querySelector(".login"), "active")setTimeout(function () {addClass(document.querySelector(".sk-rotating-plane"), "active")document.querySelector(".login").style.display = "none"}, 800)setTimeout(function () {removeClass(document.querySelector(".login"), "active")removeClass(document.querySelector(".sk-rotating-plane"), "active")document.querySelector(".login").style.display = "block"alert("登录成功")}, 5000)} </script></body> </html>
login.html
再把css js和img下载下来,创建static路径,修改好路径。
from django.shortcuts import render, HttpResponse, redirect# Create your views here.def index(request):return HttpResponse('<h1>o98K</h1>')def login(request):err_msg = ''# print(request.method,type(request.method))if request.method == 'POST':# 获取提交的数据# print(request.POST)user = request.POST.get('user')pwd = request.POST.get('pwd')# print(user,type(user))if user == 'alex' and pwd == 'alexdsb':# return redirect('https://www.baidu.com')return redirect('/index/')else:err_msg = '用户名或密码错误'return render(request, 'login.html', {'err_msg': err_msg})
view.py代码
最终页面展示
账号和密码错误:
成功的跳转:
转载于:https://www.cnblogs.com/wangkaiok/p/10346807.html
django第一章(django配置相关和简单的登录实例)相关推荐
- 第一章 Django 建站基础
第一章 Django建站基础 1.1网站的定义及组成 网站(website)组成: (1)域名:www.baidu.com (2)空间服务器:虚拟主机,独立服务器,vps (3)DNS域名解析 (4) ...
- 存储服务器设置和文件对拷,思科CNNA中文教程-第一章路由器配置和文件管理(上)...
第一章 路由器配置和文件管理 1.1 通过TFTP来配置路由器 提问:使用TFTP来加载路由器的配置文件 回答: Router1#copy tftp://172.25.1.1/NEWCONFIG ru ...
- 《Abaqus GUI程序开发指南(Python语言)》——第一章 概述1.1 简单插件实例——创建带孔板有限元模型...
本节书摘来自异步社区<Abaqus GUI程序开发指南(Python语言)>一书中的第1章,第1.1节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区&q ...
- 并发编程基础篇——第一章(并发相关基础概念理解)
其实讲到并发编程,有时候会问自己为什么要去做这些知识的积累和沉淀,可能我们做业务的在职业生涯里,并不会经常使用到这些所谓的多线程编程,顶多可能开一个线程,去执行个任务,又或者通过定时器触发某个业务,实 ...
- 操作系统第一章操作系统引论相关习题
一.单项选择题 1.操作系统是一种____. A.通用软件 B.操作系统 C.应用软件 D.软件包 答:b 2.操作系统的___管理部分负责对进程进行调度. A.主存储器 B.控制器 C.运算器 D. ...
- 第一章 开始 |编写一个简单的C++程序
学习目标: 编写一个简答的C++程序 学习内容: 1.一个简单的c++程序 2.输入和输出 3.关于注释 4.控制流 5.类简介 6.书店程序 1.1 编写一个简单的c++程序 每个C++程序都包含一 ...
- 开源SWD脱机烧录器-第一章 软硬件配置及其初始化
/********************2020.03.02更新********************/ 感谢博友的提醒我忘记上传Qt源码了,这就补上 https://gitee.com/airt ...
- VS Code 遇上 Java丨第一章:配置 Java 开发环境
读不在三更五鼓,功只怕一曝十寒. 准备工作 VS Code 安装包,示例版本:code_1.55.2-1618307277_amd64 JDK 15 安装包,示例版本:jdk-15.0.1_linux ...
- 第四章 .net core做一个简单的登录
项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https ...
最新文章
- Java学习之 多态 Polymorphism
- mysql 增量备份_云计算-开源数据库-备份
- 不要迷失在技术的海洋中【转】
- 【前端基础进阶】JS-Object 功能详解
- JAXP进行DOM和SAX解析
- KnockoutJS-与服务端交互
- 计算机系统-CPU优化/特权级
- @Transactional注解属性(2)
- 如何自动加载scratch3.0的页面上实现自动加载原有的作品
- 2019腾讯广告算法大赛
- 【导弹四种坐标系及坐标系之间的变换】
- 【论文阅读】PatchmatchNet
- 传世私服服务器列表不显示,关于传世私服的人物名字显示设置详解
- 创新案例分享 | 建设医院绩效管理系统,促进医院健康良性发展
- 如何在Bios里禁用集成显卡
- 苹果最新专利:虚拟SIM卡
- vue+iView实现导入与导出excel功能
- PHP上传文件到FTP服务器
- 关于vs编译器 /GZ 选项的意思
- 下载yutube视频的方法 超方便