Loading

Django入门_login_demo

一、其他备注

1、Django入门博客

2、django为我们提供了什么

使用 Django 框架之后,开发服务端方便了很多。我们只需要做 ①定义函数 ②定义函数和路径的对应关系 这两件事情就可以使得服务端正常响应。

3、初始化数据库

先 python3 manage.py makemigrations
再 python3 manage.py migrate
 

二、准备环境

2.1、python环境-python3x

 
1⃣️方法一:brew安装
brew install python3
2⃣️方法二:官网下载安装包直接运行安装
官网:https://www.python.org/downloads/mac-osx/
 
安装完成后:python3 --version查看版本安装成功

2.2、django环境-django3x

pip3 install Django
安装完成后:
django-admin --version查看版本
python3 -m django --version查看版本
 

三、新建Django项目

1⃣️方法一:命令行
新建项目----django-admin startproject 项目名称
新建app----python3 manage.py startapp app名字
2⃣️方法二:pycharm---🙆‍♂️推荐
会自动创建同项目名app
 

 

 

四、项目目录文件解释

 

 

 

最外层test01----项目文件夹
里面test01----与项目同名的app文件夹
templates----pycharm自动生成的templates文件夹,后期放置html文件使用
settings----各种设置文件,下面会详细解释
urls----路径与函数的对应关系,路由相关配置
wsgi----socket通信
manage----管理Django项目的入口文件
 
后期会加入views.py文件-----定义函数,处理函数文件
后期会加入static文件夹-----放置静态文件,如图片/css/js等
 

 

 

4.1、settings文件

 

4.1.1、BASE_DIR配置---指到最外层项目文件夹下

  

4.1.2、templates配置

所有跟html文件相关的设置都放在这里

 

 

4.1.3、database配置

 

 

4.1.4、静态文件配置

 

 

 

4.2、urls文件

目前有三种方法,url path re_path导入对应的包即可,具体区别百度吧
url--django1x的使用方法
re_path/path--django2x的方法

 

 

 

五、运行命令

1⃣️方法一:命令运行
python3 manage.py runserver IP:端口 --> 在指定的IP和端口启动 python3 manage.py runserver 端口 --> 在指定的端口启动 python3 manage.py runserver --> 默认在本机的8000端口启动
2⃣️方法二:pycharm运行
pycharm运行点击右上角绿色的小三角,直接可以启动Django项目(前提是小三角左边是你的Django项目名)
 

 

 

六、登录项目demo

6.1、结果展示/目录展示

 

 

 

 

 

6.2、先测试下,将项目启动

6.2.1、添加views文件,进行函数处理

1 # 导入 Django 自带的 HttpResponse 模块,用它来帮我们做HTTP协议的响应
2 # 这样,我们只需要关心处理用户请求的函数就可以了,而不需要关注协议本身所做的事情
3 from django.shortcuts import HttpResponse, render, redirect   ## 要返回一个完整的HTML文件,就需要用到render模块
4 
5 def xiaoxue(request):
6     # request参数保存了所有和用户浏览器请求相关的数据
7     # 把想要显示在页面上的内容写到 HttpResponse 函数的括号里面即可
8     return HttpResponse("hello!!!!")
View Code

 

 
 

6.2.2、修改urls.py文件,添加xiaoxue方法的路由

1 from django.contrib import admin
2 from django.urls import path, re_path
3 from .views import *
4 
5 # 保存了路径与函数的对应关系
6 urlpatterns = [
7     path('xiaoxue/', xiaoxue),
8     path('admin/', admin.site.urls),
9 ]
View Code

 

 

6.2.3、运行项目查看结果

运行项目:python3 manage.py runserver
访问:http://127.0.0.1:8000/xiaoxue/即可看到如下图所示
 

 

 

6.3、进行登录方法/页面的编写

6.3.1、需要修改四个文件

urls.py-------路径与函数之间的对应关系
views.py-------函数定义与逻辑处理
login.html------加入一个login.html文件
static-----静态文件夹下面加入bootstrap、jquery等文件
 

6.3.2、static文件夹,因为要使用bootstrap样式,下载该框架

 

6.3.3、将下载的两个文件放到static文件夹下

 

 

 

修改setting.py文件,添加下面语句
1 STATIC_URL = '/static/'
2 STATICFILES_DIRS = [
3     os.path.join(BASE_DIR, 'static'),
4 ]

 

 

6.3.4、templates-创建login.html文件

引入上面下载的文件
 1 <!DOCTYPE html>
 2 <html lang="zh-CN">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta http-equiv="x-ua-compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1">
 7     <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
 8     <link rel="stylesheet" href="/static/font-awesome-4.7.0/css/font-awesome.min.css">
 9     <title>mysite-登录页面</title>
10     <style>
11         body {
12             background-color: #eee;
13         }
14     </style>
15 </head>
16 <body>
17 
18 <div class="container">
19     <div class="row">
20         <div class="col-md-4 col-md-offset-4" style="margin-top: 100px">
21             <h1 class="text-center">请登录</h1>
22             <form class="form-horizontal" action="/login/" method="post">
23                 <div class="form-group">
24                     <label for="inputEmail3" class="col-sm-2 control-label"></label>
25                     <div class="input-group col-sm-8">
26                          <span class="input-group-addon"><i class="fa fa-envelope-o fa-fw"></i></span>
27                         <input type="email" name="email" class="form-control" id="inputEmail3" placeholder="Email">
28                     </div>
29                 </div>
30                 <div class="form-group">
31                     <label for="inputPassword3" class="col-sm-2 control-label"></label>
32                     <div class="input-group col-sm-8">
33                         <span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span>
34                         <input type="password" name="pwd" class="form-control" id="inputPassword3" placeholder="Password">
35                     </div>
36                 </div>
37                 <div class="form-group">
38                     <div class="input-group col-sm-offset-2 col-sm-8">
39                         <div class="checkbox">
40                             <label>
41                                 <input type="checkbox"> 记住我
42                             </label>
43                         </div>
44                     </div>
45                 </div>
46                 <div class="form-group">
47                     <div class="input-group col-sm-offset-2 col-sm-8">
48                         <button type="submit" class="btn btn-primary btn-block">登录</button>
49                     </div>
50                     <p class="text-danger text-center">{{ error }}</p>
51                 </div>
52                 {#{% csrf_token %}是为了解决下面的问题#}
53                 {# CSRF verification failed. Request aborted. 这一个是 Django 自带的 CSRF 防范机制。CSRF 是什么?某度百科有言:“CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。”(可以看出,我们的 Django 框架,可是相当的严谨和方便。)#}
54                 {% csrf_token %}
55             </form>
56         </div>
57     </div>
58 </div>
59 </body>
60 </html>
View Code

 

 

 

 

6.3.5、views.py文件添加login方法

 1 # 导入 Django 自带的 HttpResponse 模块,用它来帮我们做HTTP协议的响应
 2 # 这样,我们只需要关心处理用户请求的函数就可以了,而不需要关注协议本身所做的事情
 3 from django.shortcuts import HttpResponse, render, redirect   ## 要返回一个完整的HTML文件,就需要用到render模块
 4 
 5 def xiaoxue(request):
 6     # request参数保存了所有和用户浏览器请求相关的数据
 7     # 把想要显示在页面上的内容写到 HttpResponse 函数的括号里面即可
 8     return HttpResponse("hello!!!!")
 9 
10 def login(request):
11     error_msg = ''
12     if request.method == 'POST':
13         # 获取用户提交的数据,做是否登录成功的判断分别
14         # 取出邮箱和密码进行验证
15         email = request.POST.get('email', None)
16         pwd = request.POST.get('pwd', None)
17         if email == 'zhangxue@qq.com' and pwd == '123456':
18             # 登录成功
19             return redirect("https://www.cnblogs.com/zhangxue521/")
20         else:
21             # 登录失败
22             error_msg = '账号或密码错误'
23     # 如果不是POST,就返回login页面
24     return render(request, 'login.html', {'error': error_msg})
View Code

 

 

6.3.6、urls.py文件添加路由

 
添加re_path(r'^$', login),为了直接访问ip的时候跳转到login
 1 from django.contrib import admin
 2 from django.urls import path, re_path
 3 from .views import *
 4 
 5 # 保存了路径与函数的对应关系
 6 urlpatterns = [
 7     re_path(r'^$', login),
 8     path('xiaoxue/', xiaoxue),
 9     path('admin/', admin.site.urls),
10    path('login/', login)
11 ]

 

 

6.3.7、启动项目

运行项目:python3 manage.py runserver
访问:http://127.0.0.1:8000即可看到如下图所示

 

 

email == 'zhangxue@qq.com' and pwd == '123456'
跳转到博客园https://www.cnblogs.com/zhangxue521/
 
 
 
 
 

 

posted @ 2020-04-26 16:44  爱笑的眼睛真美  阅读(1147)  评论(0编辑  收藏  举报