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 相关文章推荐
python中使用urllib2伪造HTTP报头的2个方法
Jul 07 Python
Python3基础之函数用法
Aug 13 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
python脚本内运行linux命令的方法
Jul 02 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
Python多图片合并PDF的方法
Jan 03 Python
华为2019校招笔试题之处理字符串(python版)
Jun 25 Python
python通过http下载文件的方法详解
Jul 26 Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 Python
Pytorch转onnx、torchscript方式
May 25 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 Python
Django权限控制的使用
Jan 07 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
利用PHP制作简单的内容采集器的代码
2007/11/28 PHP
JS 网站性能优化笔记
2011/05/24 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
python通过索引遍历列表的方法
2015/05/04 Python
python批量制作雷达图的实现方法
2016/07/26 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
利用python 读写csv文件
2020/09/10 Python
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
圣彼得堡鲜花配送:Semicvetic
2020/09/15 全球购物
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
2014年度工作总结报告
2014/12/15 职场文书
铁路安全反思材料
2014/12/24 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang