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配置相关和简单的登录实例)相关推荐

  1. 第一章 Django 建站基础

    第一章 Django建站基础 1.1网站的定义及组成 网站(website)组成: (1)域名:www.baidu.com (2)空间服务器:虚拟主机,独立服务器,vps (3)DNS域名解析 (4) ...

  2. 存储服务器设置和文件对拷,思科CNNA中文教程-第一章路由器配置和文件管理(上)...

    第一章 路由器配置和文件管理 1.1 通过TFTP来配置路由器 提问:使用TFTP来加载路由器的配置文件 回答: Router1#copy tftp://172.25.1.1/NEWCONFIG ru ...

  3. 《Abaqus GUI程序开发指南(Python语言)》——第一章 概述1.1 简单插件实例——创建带孔板有限元模型...

    本节书摘来自异步社区<Abaqus GUI程序开发指南(Python语言)>一书中的第1章,第1.1节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区&q ...

  4. 并发编程基础篇——第一章(并发相关基础概念理解)

    其实讲到并发编程,有时候会问自己为什么要去做这些知识的积累和沉淀,可能我们做业务的在职业生涯里,并不会经常使用到这些所谓的多线程编程,顶多可能开一个线程,去执行个任务,又或者通过定时器触发某个业务,实 ...

  5. 操作系统第一章操作系统引论相关习题

    一.单项选择题 1.操作系统是一种____. A.通用软件 B.操作系统 C.应用软件 D.软件包 答:b 2.操作系统的___管理部分负责对进程进行调度. A.主存储器 B.控制器 C.运算器 D. ...

  6. 第一章 开始 |编写一个简单的C++程序

    学习目标: 编写一个简答的C++程序 学习内容: 1.一个简单的c++程序 2.输入和输出 3.关于注释 4.控制流 5.类简介 6.书店程序 1.1 编写一个简单的c++程序 每个C++程序都包含一 ...

  7. 开源SWD脱机烧录器-第一章 软硬件配置及其初始化

    /********************2020.03.02更新********************/ 感谢博友的提醒我忘记上传Qt源码了,这就补上 https://gitee.com/airt ...

  8. VS Code 遇上 Java丨第一章:配置 Java 开发环境

    读不在三更五鼓,功只怕一曝十寒. 准备工作 VS Code 安装包,示例版本:code_1.55.2-1618307277_amd64 JDK 15 安装包,示例版本:jdk-15.0.1_linux ...

  9. 第四章 .net core做一个简单的登录

    项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https ...

最新文章

  1. Java学习之 多态 Polymorphism
  2. mysql 增量备份_云计算-开源数据库-备份
  3. 不要迷失在技术的海洋中【转】
  4. 【前端基础进阶】JS-Object 功能详解
  5. JAXP进行DOM和SAX解析
  6. KnockoutJS-与服务端交互
  7. 计算机系统-CPU优化/特权级
  8. @Transactional注解属性(2)
  9. 如何自动加载scratch3.0的页面上实现自动加载原有的作品
  10. 2019腾讯广告算法大赛
  11. 【导弹四种坐标系及坐标系之间的变换】
  12. 【论文阅读】PatchmatchNet
  13. 传世私服服务器列表不显示,关于传世私服的人物名字显示设置详解
  14. 创新案例分享 | 建设医院绩效管理系统,促进医院健康良性发展
  15. 如何在Bios里禁用集成显卡
  16. 苹果最新专利:虚拟SIM卡
  17. vue+iView实现导入与导出excel功能
  18. PHP上传文件到FTP服务器
  19. 关于vs编译器 /GZ 选项的意思
  20. 下载yutube视频的方法 超方便

热门文章

  1. word2016中公式不能用斜体的解决方法
  2. 在线支付线上支付是什么?其应用范围
  3. 【街道可步行性】步行通达性对街区空间活力与交往的影响 | 上海城市规划
  4. 西门子ET200SP基座单元的区别与分类以及注意事项
  5. android word分页,控制分页
  6. 打造一个丝滑般自动轮播无限循环Android库
  7. 前端优化-改善滑动流畅度的几类方法
  8. C#基于WindowsMediaPlayer实现音视频文件播放器
  9. 微信小程序:组件Component接收不到参数id
  10. u8应用服务器跟数据库分离部署_u8 数据库分离