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实现进程间通信简单实例
Jul 23 Python
Python下使用Psyco模块优化运行速度
Apr 05 Python
python使用urlparse分析网址中域名的方法
Apr 15 Python
python中zip和unzip数据的方法
May 27 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
Mar 14 Python
Python基础之条件控制操作示例【if语句】
Mar 23 Python
python的mysql数据库建立表与插入数据操作示例
Sep 30 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
python json load json 数据后出现乱序的解决方案
Feb 27 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
详解Python内置模块Collections
Mar 22 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 全文搜索和替换的实现代码
2008/07/29 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
python ftplib模块使用代码实例
2019/12/31 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
英国门把手公司:Door Handle Company
2019/05/12 全球购物
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
干部培训自我鉴定
2014/01/22 职场文书
财务主管岗位职责
2014/02/28 职场文书
三分钟演讲稿事例
2014/03/03 职场文书
青年文明号口号
2014/06/17 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
婚内房产协议书范本
2014/10/02 职场文书
自主招生自荐信格式
2015/03/04 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
图文详解Nginx版本平滑升级方案
2021/09/15 Servers
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python