Django基础知识与基本应用入门教程


Posted in Python onJuly 20, 2018

本文实例讲述了Django基础知识与基本应用。分享给大家供大家参考,具体如下:
MVC模式和MTV模式

MVC model view controller

MTV model templates view controller

Django的MTV模式本质是各组件之间为了保持松耦合关系,Django的MTV分别代表:

       Model(模型):负责业务对象与数据库的对象(ORM)
       Template(模版):负责如何把页面展示给用户
       View(视图):负责业务逻辑,并在适当的时候调用Model和Template

此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template。

Django基础知识与基本应用入门教程

Django基本命令

创建一个Django项目

django-admin startproject project_name

创建项目应用

python manage.py startapp appName

启动Django项目

python manage.py runserver IP PORT  #默认是8000

查看django版本信息

import django
print(django.VERSION)

创建一个mysite项目

django-admin.py startproject mysite

当前目录下会生成一个mysite项目目录,结构如下:

Django基础知识与基本应用入门教程

manage.py是Django项目里的工具,通过它可以调用django shell和数据库等。

settings.py是项目的默认设置文件,包括数据库的信息,调试标志以及其他工作的变量。

urls.py是负责把url模式映射到应用程序。

项目与应用:

一个项目可以有多个应用

一个应用可以被多个项目拥有

在mysite目录下创建应用,比如blog

python manage.py startapp blog

Django基础知识与基本应用入门教程

生成如上目录结构。

models:与数据库交互的文件
views:存放视图函数的

启动django项目

python manage.py runserver 8080

这样项目就能启动了,访问http://127.0.0.1:8080即可访问。

注意csrf保护机制

在mysite项目目录下的settings配置文件中,中间件MIDDLEWARE设置中,有一条
django.middleware.csrf.CsrfViewMiddleware一行,新手练习时可以先将其注释掉。

下面我在mysite这个项目写一个练手blog应用,注册和登录。

下面是blog应用中views.py的代码:

from django.shortcuts import render,HttpResponse #导入render是为了返回渲染后的网页,HttpResponse是可以返回字符串
import json
# Create your views here.
def login(request):
  if request.method=="POST":#指定格式为POST
    print(request.POST)
    username=request.POST.get("user")
    password=request.POST.get("pwd")
    f=open("a.txt","r")
    # data=f.read()
    dic=json.load(f)
    if username in dic and password==dic[username]:
      return HttpResponse("登录成功") #返回字符串内容
  return render(request,"login.html") #返回网页内容
def auth(request):
  if request.method=="POST":
    # print(request.POST)
    username=request.POST.get("user")
    password=request.POST.get("pwd")
    info={}
    info[username]=password
    print(info)
    f=open("a.txt","a")
    data=json.dump(info,f)
    f.close()
  return render(request,"auth.html")

上面的注册机制写的比较简单,只是为了测试一下django的使用。

下面是mysite目录下的urls.py代码

from django.conf.urls import url
from django.contrib import admin
from blog import views
urlpatterns = [
  url(r'^admin/', admin.site.urls),
  url(r'login',views.login),
  url(r'auth',views.auth),#login为浏览器url地址栏IP:PORT/后面的内容,对应一个视图函数
]

下面为两个html页面

下面是login.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<h2>Django登录页面</h2>
<form action="http://127.0.0.1:8900/login/" method="post">
  <p>姓名<input type="text" name="user"></p>
  <p>密码<input type="password" name="pwd"></p>
  <p>
    <input type="submit">
  </p>
</form>
</body>
</html>

下面是auth.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<h2>Django注册页面</h2>
<form action="http://127.0.0.1:8900/auth" method="post">
  <p>姓名<input type="text" name="user"></p>
  <p>密码<input type="password" name="pwd"></p>
  <p>
    <input type="submit">
  </p>
</form>
</body>
</html>

下图左面为整个目录结构,右面为settings配置文件中需要注意的位置,该项标识了模板目录,否则会找不到。

Django基础知识与基本应用入门教程

如上配置之后,在templates目录内写好对应的两个html页面之后,通过python manage.py runserver 8900命令启动项目,访问相应ip 端口 等就可以访问了。

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
Python实现的下载网页源码功能示例
Jun 13 Python
Python探索之实现一个简单的HTTP服务器
Oct 28 Python
python如何去除字符串中不想要的字符
Jul 05 Python
Python实现中一次读取多个值的方法
Apr 22 Python
Python一行代码实现快速排序的方法
Apr 30 Python
Python 监测文件是否更新的方法
Jun 10 Python
Python Gitlab Api 使用方法
Aug 28 Python
python基本算法之实现归并排序(Merge sort)
Sep 01 Python
Python程序慢的重要原因
Sep 04 Python
Python可视化工具如何实现动态图表
Oct 23 Python
opencv python 2D直方图的示例代码
Jul 20 #Python
Linux下python制作名片示例
Jul 20 #Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 #Python
使用python脚本实现查询火车票工具
Jul 19 #Python
Python 判断文件或目录是否存在的实例代码
Jul 19 #Python
Flask框架Jinjia模板常用语法总结
Jul 19 #Python
python一行sql太长折成多行并且有多个参数的方法
Jul 19 #Python
You might like
windows平台中配置nginx+php环境
2015/12/06 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
js跑马灯代码(自写)
2013/04/17 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
2017/01/01 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
python 类之间的参数传递方式
2019/12/20 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
CSS3实现点击放大的动画实例代码
2017/02/27 HTML / CSS
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
Java软件工程师综合面试题笔试题
2013/09/08 面试题
事业单位公务员的职业生涯规划
2014/01/15 职场文书
高中军训感想300字
2014/03/04 职场文书
行政主管职责范本
2014/03/07 职场文书
大跃进口号
2014/06/16 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
学生检讨书范文
2015/01/27 职场文书
公司市场部岗位职责
2015/04/15 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android