一、其他备注
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
![](https://img-blog.csdnimg.cn/img_convert/dceae43a8097b8ff70d179850a929ff6.png)
四、项目目录文件解释
![](https://img-blog.csdnimg.cn/img_convert/7ff52268b41f2d7f6c90056379632ec1.png)
最外层test01----项目文件夹
里面test01----与项目同名的app文件夹
templates----pycharm自动生成的templates文件夹,后期放置html文件使用
settings----各种设置文件,下面会详细解释
urls----路径与函数的对应关系,路由相关配置
wsgi----socket通信
manage----管理Django项目的入口文件
后期会加入views.py文件-----定义函数,处理函数文件
后期会加入static文件夹-----放置静态文件,如图片/css/js等
![](https://img-blog.csdnimg.cn/img_convert/4064221cee33c86e4d62b6be3bad6a08.png)
4.1、settings文件
4.1.1、BASE_DIR配置---指到最外层项目文件夹下
4.1.2、templates配置
所有跟html文件相关的设置都放在这里
![](https://img-blog.csdnimg.cn/img_convert/875e6428736903c88974798e6dbf9763.png)
4.1.3、database配置
4.1.4、静态文件配置
![](https://img-blog.csdnimg.cn/img_convert/abcd544badf436eb00a5e4697d9f2a22.png)
4.2、urls文件
目前有三种方法,url path re_path导入对应的包即可,具体区别百度吧
url--django1x的使用方法
re_path/path--django2x的方法
![](https://img-blog.csdnimg.cn/img_convert/ab627905ff8693c11dc614724ba97b5b.png)
五、运行命令
1⃣️方法一:命令运行
python3 manage.py runserver IP:端口 --> 在指定的IP和端口启动 python3 manage.py runserver 端口 --> 在指定的端口启动 python3 manage.py runserver --> 默认在本机的8000端口启动
2⃣️方法二:pycharm运行
pycharm运行点击右上角绿色的小三角,直接可以启动Django项目(前提是小三角左边是你的Django项目名)
![](https://img-blog.csdnimg.cn/img_convert/341543e98d7d86d8638a23dd14938a89.png)
六、登录项目demo
6.1、结果展示/目录展示
![](https://img-blog.csdnimg.cn/img_convert/8f7e02ba6df8eed8e42ac169b3f1e9f9.png)
6.2、先测试下,将项目启动
6.2.1、添加views文件,进行函数处理
![](https://img-blog.csdnimg.cn/img_convert/e61cc03f88ff7f6d5a79941788fdcb84.gif)
![](https://img-blog.csdnimg.cn/img_convert/2b864195151cf3a359feb8056069a1d9.gif)
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!!!!")
6.2.2、修改urls.py文件,添加xiaoxue方法的路由
![](https://img-blog.csdnimg.cn/img_convert/dc0953eb9e3f97911bdc929a04021a98.gif)
![](https://img-blog.csdnimg.cn/img_convert/c52c476cfd6070f57d7f4261d21e7dc8.gif)
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 ]
6.2.3、运行项目查看结果
运行项目:python3 manage.py runserver
访问:
http://127.0.0.1:8000/xiaoxue/即可看到如下图所示
![](https://img-blog.csdnimg.cn/img_convert/902dc437c5b218137c954083111386de.png)
6.3、进行登录方法/页面的编写
6.3.1、需要修改四个文件
urls.py-------路径与函数之间的对应关系
views.py-------函数定义与逻辑处理
login.html------加入一个login.html文件
static-----静态文件夹下面加入bootstrap、jquery等文件
6.3.2、static文件夹,因为要使用bootstrap样式,下载该框架
font-awesome:
https://fontawesome.dashgame.com/
6.3.3、将下载的两个文件放到static文件夹下
![](https://img-blog.csdnimg.cn/img_convert/94dcadeebc5e5a9fd4f77feefcde9fe7.png)
修改setting.py文件,添加下面语句
1 STATIC_URL = '/static/'
2 STATICFILES_DIRS = [
3 os.path.join(BASE_DIR, 'static'),
4 ]
6.3.4、templates-创建login.html文件
引入上面下载的文件
![](https://img-blog.csdnimg.cn/img_convert/f5128f42e1fc9b077c04940a7904dffc.gif)
![](https://img-blog.csdnimg.cn/img_convert/13c598fb40d548a08c93a11dbaa666fe.gif)
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>
6.3.5、views.py文件添加login方法
![](https://img-blog.csdnimg.cn/img_convert/a5e0368ca7e740cdfdd63a1b0514e1c0.gif)
![](https://img-blog.csdnimg.cn/img_convert/5d9d0ed6b5b00876d3a3fc17f198f562.gif)
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})
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即可看到如下图所示
![](https://img-blog.csdnimg.cn/img_convert/ecad8d0f4ff058cc78ee2847771e0505.png)
email == 'zhangxue@qq.com' and pwd == '123456'
跳转到博客园https://www.cnblogs.com/zhangxue521/