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中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 Python
在Python的Django框架中加载模版的方法
Jul 16 Python
对numpy中array和asarray的区别详解
Apr 17 Python
PyQt5每天必学之进度条效果
Apr 19 Python
python实现ID3决策树算法
Aug 29 Python
python实现微信小程序自动回复
Sep 10 Python
如何实现Django Rest framework版本控制
Jul 25 Python
python 元组的使用方法
Jun 09 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 Python
python实现批处理文件
Jul 28 Python
pandas中DataFrame重置索引的几种方法
May 24 Python
详解Python描述符的工作原理
Jun 11 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中读写文件实现代码
2011/10/20 PHP
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
2019/04/12 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
js Flash插入函数免激活代码
2009/03/31 Javascript
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
python之信息加密题目详解
2019/06/26 Python
django ajax发送post请求的两种方法
2020/01/05 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
Django REST 异常处理详解
2020/07/15 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
体育之星事迹材料
2014/05/11 职场文书
个人收入证明范本
2014/09/18 职场文书
2015公司年度工作总结
2015/05/14 职场文书
创业计划书之面包店
2019/09/12 职场文书
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android