Django基本配置

Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能

1.安装

  1. # windows 直接用pip进行安装
  2. pip install django
  3.  
  4. # 生成的django文件加入到系统环境变量

2.创建并启动

  1. 创建
  2. django-admin startproject mysite
  3.  
  4. 运行
  5. python manage.py runserver 127.0.0.1:8001
  6.  
  7. 浏览器访问:
    http://127.0.0.1:8001/
  1.  

3.mysite目录结构

  1. mysite    #目录
  2.  - mysite # 对整个程序进行配置
  3.   - init
  4.   - settings # 配置文件
  5.   - urls # URL对应关系
  6.   - wsgi # 遵循WSIG规范,uwsgi + nginx
  7. - manage.py # 管理Django程序:

Django业务配置

1.创建app

  1. python manage.py startapp cmdb -->Terminal里面运行

2.app目录结构

  1. # 目录结构
  2. - cmdb
  3. - migrations  #数据库操作记录(只是修改表结构的记录)
  4. - init      #表示python数据包(python3中有无均可)
  5. - admin      #Django为我们提供的后台管理
  6. - apps      #配置当前app
  7. - models     #创建数据库表结构,写指定的类,通过命令可以创建数据库结构
  8. - tests      #单元测试
  9. - views      #写业务逻辑代码,最重要的就是这个文件了

3.templates模板

(1)在templates目录下生成要给用户显示的登录页面

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. label{
  8. width: 80px;
  9. text-align: right;
  10. display: inline-block;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <form action="/login" method="post">
  16. <p>
  17. <label for="username">用户名:</label>
  18. <input id="username" name="user" type="text" />
  19. </p>
  20. <p>
  21. <label for="password">密码:</label>
  22. <input id="password" name="pwd" type="password" />
  23. <input type="submit" value="提交" />
  24. </p>
  25. </form>
  26. </body>
  27. </html>

login.html

(2)修改urls文件增加login路径

  1. from django.conf.urls import url
  2. from django.contrib import admin
  3. from cmdb import views #导入views模块
  4.  
  5. urlpatterns = [
  6. url(r'^admin/', admin.site.urls),
  7. url(r'^login', views.login), #添加login.html的url,后面要加逗号
  8. ]

(3)修改view文件,对数据进行处理

  1. from django.shortcuts import HttpResponse
  2. from django.shortcuts import render
  3.  
  4. def login(request):
  5. return render(request,'login.html')
  6.  
  7. # 上面代码等同于这个
  8. # f = open('templates/login.html','r',encoding='utf-8')
  9. # data = f.read()
  10. # f.close()
  11. # return HttpResponse(data)

(4)配置静态文件static路径

静态文件static里面是存放css和js文件的,要想显示相应的样式,必须先修改settings文件配置

  1. # settings.py文件里增加下面内容
  1. STATIC_URL = '/static/'
    STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
    )

配置完路劲后就可以用css和js文件了

Django表单交互

1.获取表单提交类型做相应处理,用户名密码输正确跳转到页面,输入错误有提示信息

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <link rel="stylesheet" href="/static/commons.css" />
  7. <style>
  8. label{
  9. width: 80px;
  10. text-align: right;
  11. display: inline-block;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <form action="/login/" method="post">
  17. <p>
  18. <label for="username">用户名:</label>
  19. <input id="username" name="user" type="text" />
  20. </p>
  21. <p>
  22. <label for="password">密码:</label>
  23. <input id="password" name="pwd" type="password" />
  24. <input type="submit" value="提交" />
  25. <span style="color: red;">{{ error_msg }}</span>
  26. </p>
  27. </form>
  28.  
  29. </body>
  30. </html>

login.html

  1. from django.shortcuts import HttpResponse
  2. from django.shortcuts import render
  3. from django.shortcuts import redirect
  4.  
  5. def login(request):
  6. # request 包含了用户提交的所有信息
  7. # print(request.method)
  8.  
  9. error_msg = ''
  10. if request.method == 'POST':
  11. user = request.POST.get('user', None)
  12. pwd = request.POST.get('pwd', None)
  13. if user == 'root' and pwd == '':
  14. # 去跳转
  15. return redirect('http://www.baidu.com')
  16. else:
  17. error_msg = '用户名或密码错误'
  18.  
  19. return render(request, 'login.html', {'error_msg': error_msg})

2.模拟数据库交互

访问login界面,用户输入用户名跳转到home页面

(1)登陆页面

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <link rel="stylesheet" href="/static/commons.css" />
  7. <style>
  8. label{
  9. width: 80px;
  10. text-align: right;
  11. display: inline-block;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <form action="/login/" method="post">
  17. <p>
  18. <label for="username">用户名:</label>
  19. <input id="username" name="user" type="text" />
  20. </p>
  21. <p>
  22. <label for="password">密码:</label>
  23. <input id="password" name="pwd" type="password" />
  24. <input type="submit" value="提交" />
  25. <span style="color: red;">{{ error_msg }}</span>
  26. </p>
  27. </form>
  28.  
  29. </body>
  30. </html>

login.html

(2)home页面

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body style="margin: 0">
  8. <div style="height: 48px;background-color: #dddddd"></div>
  9. <div>
  10. <form action="/home/" method="post">
  11. <input type="text" name="username" placeholder="用户名" />
  12. <input type="text" name="email" placeholder="邮箱"/>
  13. <input type="text" name="gender" placeholder="性别"/>
  14. <input type="submit" value="添加" />
  15. </form>
  16. </div>
  17. <div>
  18. <table>
  19. {% for row in user_list %}
  20. <tr>
  21. <td>{{ row.username }}</td>
  22. <td>{{ row.gender }}</td>
  23. <td>{{ row.email }}</td>
  24. </tr>
  25. {% endfor %}
  26.  
  27. </table>
  28. </div>
  29.  
  30. </body>
  31. </html>

home.html

(3)修改view文件,对输入的内容进行处理

  1. from django.shortcuts import HttpResponse
  2. from django.shortcuts import render
  3. from django.shortcuts import redirect
  4.  
  5. def login(request):
  6. # request 包含了用户提交的所有信息
  7. # print(request.method)
  8.  
  9. error_msg = ''
  10. if request.method == 'POST':
  11. user = request.POST.get('user', None)
  12. pwd = request.POST.get('pwd', None)
  13. if user == 'root' and pwd == '':
  14. # 去跳转
  15. return redirect('/home')
  16. else:
  17. error_msg = '用户名或密码错误'
  18.  
  19. return render(request, 'login.html', {'error_msg': error_msg})
  20.  
  21. USER_LIST = [
  22. {'id': 1, 'username': 'derek', 'email': '', "gender": '男'},
  23. {'id': 2, 'username': 'jack', 'email': '', "gender": '女'},
  24. {"id": 3, 'username': 'tom', 'email': '', "gender": '男'},
  25. ]
  26.  
  27. def home(request):
  28. if request.method == "POST":
  29. # 获取用户提交的数据 POST请求中
  30. u = request.POST.get('username')
  31. e = request.POST.get('email')
  32. g = request.POST.get('gender')
  33. temp = {'username': u, 'email': e, "gender": g}
  34. USER_LIST.append(temp)
  35. return render(request, 'home.html', {'user_list': USER_LIST})

3.获取checkbox多个值

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <form action="/login/" method="POST" >
  9. <p>
  10. 111:<input type="checkbox" name="favor" value="11"/>
  11. 222:<input type="checkbox" name="favor" value="22"/>
  12. 333:<input type="checkbox" name="favor" value="33"/>
  13. </p>
  14. <input type="submit" value="提交"/>
  15. </form>
  16. </body>
  17. </html>

login

修改views.py文件对表单处理

  1. from django.shortcuts import HttpResponse
  2. from django.shortcuts import render
  3. from django.shortcuts import redirect
  4.  
  5. def login(request):
  6. #checkbox 多选框
  7. if request.method == "POST":
  8. favor_list = request.POST.getlist("favor") #getlist获取多个值
  9. print(favor_list) #多选框获取到的是列表格式
  10. #['11', '22', '33']
  11. return render(request,"login.html")
  12. elif request.method == "GET":
  13. return render(request,"login.html")
  14. else:
  15. print("other")

当用户提交之后,在后台上可以获取用户提交的信息,如下图

4.上传文件file

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <form action="/login" method="POST" enctype="multipart/form-data">
  9. <p>
  10. <input type="file" name="files"/>
  11. </p>
  12. <input type="submit" value="提交"/>
  13. </form>
  14. </body>
  15. </html>

login.html

views.py

  1. from django.shortcuts import render,HttpResponse
  2. import os
  3. def login(request):
  4. #file 上传文件
  5. if request.method == "POST":
  6. obj = request.FILES.get('files') #用files获取文件对象
  7. if obj:
  8. print(obj, type(obj), obj.name)
  9. # test.jpg <class 'django.core.files.uploadedfile.InMemoryUploadedFile'> test.jpg
  10. import os
  11. file_path = os.path.join('upload', obj.name) #保存用户上传文件的路劲
  12. f = open(file_path, "wb")
  13. for item in obj.chunks(): #chunks表示所有的数据块,是个迭代器
  14. f.write(item)
  15. f.close()
  16. return render(request,"login.html")
  17. elif request.method == "GET":
  18. return render(request,"login.html")
  19. else:
  20. print("other")

1.Django安装与运行的更多相关文章

  1. Python 2/3 安装与运行环境设置

    Python 2/3 安装与运行环境设置: 1.Python 软件源:https://www.python.org/    下载Win版本 https://www.python.org/downloa ...

  2. windows环境下Django安装配置

    --python下载 https://www.python.org/downloads/ --pip 下载 https://pypi.python.org/pypi/pip --pip 安装及路径 解 ...

  3. python Django 学习笔记(一)—— Django安装

    注:本人python版本2.7.5 ,win7系统 安装Django https://www.djangoproject.com/download/ 官方下载Django-1.5.5.tar.gz 1 ...

  4. django安装配置及测试

    django安装之前我们假设你已经安装了python,和mysql(不是必须的):(如果没有google一下挺简单不介绍了)下面直接介绍django的安装配置:到下面连接可以下载www.djangop ...

  5. Python之道1-环境搭建与pycharm的配置django安装及MySQL数据库配置

    近期做那个python的开发,今天就来简单的写一下开发路线的安装及配置, 开发路线 Python3.6.1+Pycharm5.0.6+Django1.11+MySQL5.7.18 1-安装Python ...

  6. Django安装与开发虚拟环境搭建01

    Django是一款基于python的MVT的web开发框架(m表示model,主要用于对数据库层的封装  ,v表示view,用于向用户展示结果,c表示controller,是核心,用于处理请求.获取数 ...

  7. (转载)Python之道1-环境搭建与pycharm的配置django安装及MySQL数据库配置

    近期做那个python的开发,今天就来简单的写一下开发路线的安装及配置, 开发路线 Python3.6.1+Pycharm5.0.6+Django1.11+MySQL5.7.18 1-安装Python ...

  8. Django 安装配置

    1-安装Python3.6.1 Python2.x 与3.x的版本在语法上稍有不同,区别在于输出语句的不同,这个可以看相关的文档. Python3.6.1,可以在Python的官网上下载:https: ...

  9. linux --- 2.常用命令 , python3, django安装

    一.常用命令 1.常识命令 ① w      显示终端连接数 ②pwd    我在哪 ③whoami      我是谁 ④which 命令        找到命令的绝对路径 2.linux 命令行的组 ...

随机推荐

  1. 如何在.Net Core调用NodeJs

    概述 Microsoft.AspNetCore.NodeServices库 实例 新建aspnet core站点 添加nuget包 建立node环境,此处示例用于扫描wifi环境 建立nodejs的程 ...

  2. jsonp实现跨域资源共享原理

  3. sqlserver 删除表结构

    sqlserver-----------删除表结构use IndividualTaxGOdeclare @sql varchar(8000)while (select count(*) from sy ...

  4. ES6躬行记(15)——箭头函数和尾调用优化

    一.箭头函数 箭头函数(Arrow Function)是ES6提供的一个很实用的新功能,与普通函数相比,不但在语法上更为简洁,而且在使用时也有更多注意点,下面列出了其中的三点: (1)由于不能作为构造 ...

  5. CTSC2017总结

    这个博客已经弃坑近一年了,自从去年国赛大力卡线进队后这近一年来我的情况从博客一年没更就可见一斑,OI水平原(zhi)地(xian)踏(fu)步(chong),炉石和双升的姿势水平倒是提高不少. 在经历 ...

  6. Spring Cloud 微服务笔记(七) Zuul入门

    Zuul入门 Zuul是从设备和网站到后端应用程序所有请求的前门,为内部服务提供可配置的对外URL到服务的 映射关系,基于JVM的后端路由器.其具备一下功能: 1)认证与授权 2)压力控制 3)金丝雀 ...

  7. The First of my text

    JavaScript 学习第一天 一.属性可以动态拓展 例如: var person = { name : "zs"; age : 21; } person.sex = " ...

  8. Python数据科学手册

    Python数据科学手册(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1KurSdjNWiwMac3o3iLrzBg 提取码:qogy 复制这段内容后打开百度网盘手 ...

  9. HDU-AcmKeHaoWanLe训练实录

    菜鸡队训练实录. 现场赛记录:[名称:奖项/排名] 2017: ICPC Shenyang:Gold/3 CCPC Hangzhou:Gold/3 ICPC Beijing:Gold/13 CCPC ...

  10. 用clumsy模拟丢包测试socket库的失败重传

    用python的socket库写了通信小程序,现在我需要通过软件模拟出在网络极差的情况下,socket底层解决丢包问题的能力怎么样,我一开始想的是分别在linux和windowns下分别测试,后来一想 ...