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 相关文章推荐
python3访问sina首页中文的处理方法
Feb 24 Python
在Python3中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
利用Python获取赶集网招聘信息前篇
Apr 18 Python
用tensorflow实现弹性网络回归算法
Jan 09 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 Python
django实现将后台model对象转换成json对象并传递给前端jquery
Mar 16 Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
Python可视化神器pyecharts之绘制地理图表练习
Jul 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不写闭合标签的好处
2014/03/04 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
javascript css styleFloat和cssFloat
2010/03/15 Javascript
JS 实现完美include载入实现代码
2010/08/05 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
手机端转换rem适应
2017/04/01 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
jQuery实现回到顶部效果
2020/10/19 jQuery
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
python中异常报错处理方法汇总
2016/11/20 Python
widows下安装pycurl并利用pycurl请求https地址的方法
2018/10/15 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
python3实现高效的端口扫描
2019/08/31 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
联想台湾官网:Lenovo TW
2018/05/09 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
卫校护理专业毕业生求职信
2013/11/26 职场文书
高中毕业自我评价
2014/02/08 职场文书
搞笑征婚广告词
2014/03/17 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers