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中urllib模块用法实例详解
Nov 19 Python
Python中函数eval和ast.literal_eval的区别详解
Aug 10 Python
Python解析、提取url关键字的实例详解
Dec 17 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
Jun 19 Python
用Python爬取QQ音乐评论并制成词云图的实例
Aug 24 Python
如何解决django-celery启动后迅速关闭
Oct 16 Python
基于python解线性矩阵方程(numpy中的matrix类)
Oct 21 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
Django ValuesQuerySet转json方式
Mar 16 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
用python绘制樱花树
Oct 09 Python
python线程池 ThreadPoolExecutor 的用法示例
Oct 10 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读取xml实例代码
2010/01/28 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
Javascript中Eval函数的使用说明
2008/10/11 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
python之文件读取一行一行的方法
2018/07/12 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
2020/05/25 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
中药学专业求职信
2014/05/31 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
通知书大全
2015/04/27 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript