Djanjo基础篇

djanjo简介

Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。


层次

职责

模型(Model),即数据存取层

处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。

视图(View),即表现层

处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。

模型与模板的桥梁。


模板(Template),即业务逻辑层

存取模型及调取恰当模板的相关逻辑。

Django流程介绍

著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在一起。

Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表:

Model(模型):负责业务对象与数据库的对象(ORM)

Template(模版):负责如何把页面展示给用户

View(视图):负责业务逻辑,并在适当的时候调用Model和Template

Django URL 路由系统

1、每个路由规则对应一个view中的函数

参数说明:

  • 一个正则表达式字符串
  • 一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
  • 可选的要传递给视图函数的默认参数(字典形式)
  • 一个可选的name参数
url(r‘^index/(\d*)‘, views.index),

url(r‘^articles/([0-9]{4})/$‘, views.year_archive),

url(r‘^manage/(?P<name>\w*)/(?P<id>\d*)‘, views.manage),

url(r‘^manage/(?P<name>\w*)‘, views.manage,{‘id‘:333}),

2、根据app对路由规则进行一次分类

Django的一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^buy/‘,include(‘app.urls‘)),
]

url中别名(相当于当url变化时我们不需要改 from提交的action后面url,会自动帮我们改变)

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^index‘,views.index,name=‘bieming‘),
]
###################

def index(req):
    if req.method==‘POST‘:
        username=req.POST.get(‘username‘)
        password=req.POST.get(‘password‘)
        if username==‘alex‘ and password==‘123‘:
            return HttpResponse("登陆成功")

    return render(req,‘index.html‘)

#####################

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{#     <form action="/index/" method="post">#}
     <form action="{% url ‘bieming‘ %}" method="post">
         用户名:<input type="text" name="username">
         密码:<input type="password" name="password">
         <input type="submit" value="submit">
     </form>
</body>
</html>

别名

配置文件

1、模版

TEMPLATE_DIRS = (

        os.path.join(BASE_DIR,‘templates‘),

    )

2、静态文件

STATICFILES_DIRS = (

        os.path.join(BASE_DIR,‘static‘),

    )

Django Views(视图函数)

http请求中产生两个核心对象:

http请求:HttpRequest对象

http响应:HttpResponse对象

所在位置:django.http

1、HttpRequest对象的属性:

 

path:       请求页面的全路径,不包括域名

method:     请求中使用的HTTP方法的字符串表示。全大写表示。例如

                   if  req.method=="GET":

                             do_something()

                   elseif req.method=="POST":

                             do_something_else()

GET:         包含所有HTTP GET参数的类字典对象

POST:       包含所有HTTP POST参数的类字典对象

             服务器收到空的POST请求的情况也是可能发生的,也就是说,表单form通过
             HTTP POST方法提交请求,但是表单中可能没有数据,因此不能使用
             if req.POST来判断是否使用了HTTP POST 方法;应该使用  if req.method=="POST"

COOKIES:     包含所有cookies的标准Python字典对象;keys和values都是字符串。

FILES:      包含所有上传文件的类字典对象;FILES中的每一个Key都是<input type="file" name="" />标签中                     name属性的值,FILES中的每一个value同时也是一个标准的python字典对象,包含下面三个Keys:

            filename:      上传文件名,用字符串表示
            content_type:   上传文件的Content Type
            content:       上传文件的原始内容

user:       是一个django.contrib.auth.models.User对象,代表当前登陆的用户。如果访问用户当前
             没有登陆,user将被初始化为django.contrib.auth.models.AnonymousUser的实例。你
             可以通过user的is_authenticated()方法来辨别用户是否登陆:
             if req.user.is_authenticated();只有激活Django中的AuthenticationMiddleware
             时该属性才可用

session:    唯一可读写的属性,代表当前会话的字典对象;自己有激活Django中的session支持时该属性才可用。

HttpRequest对象的属性

HttpRequest对象的方法:get_full_path(),   比如:http://127.0.0.1:8000/index33/?name=123 ,req.get_full_path()得到的结果就是/index33/?name=123

2、HttpResponse对象:

在HttpResponse对象上扩展的常用方法:页面渲染:render,render_to_response,

页面跳转:redirect

locals:   可以直接将函数中所有的变量传给模板

    return HttpResponse(‘ASD‘)
    return render_to_response(‘admin.html‘)
    return render(request,‘admin.html‘)
    return redirect(‘/choutiadmin/login‘)

Django Models(模型)

一、 数据库配置  

1、django默认支持sqlite,mysql, oracle,postgresql数据库。

<1> sqlite

django默认使用sqlite的数据库,默认自带sqlite的数据库驱动

引擎名称:django.db.backends.sqlite3

<2>mysql

引擎名称:django.db.backends.mysql

sqlite和mysql的区别是,创建表时sqlite无需提前创建表,而mysql必须是我们提前生成数据库,否则报错

2、mysql驱动程序

MySQLdb(mysql python)

mysqlclient

MySQL

PyMySQL(纯python的mysql驱动程序)

3、在django的项目中会默认使用sqlite数据库,在settings里有如下设置:

如果我们想要更改数据库,需要修改如下:

DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.mysql‘,
        ‘NAME‘:‘django_com‘,
        ‘USER‘:‘root‘,
        ‘PASSWORD‘:‘‘,

    }
}

对应代码

注意:NAME即数据库的名字,在mysql连接前该数据库必须已经创建,而上面的sqlite数据库下的db.sqlite3则是项目自动创建

USER和PASSWORD分别是数据库的用户名和密码。

设置完后,再启动我们的Django项目前,我们需要激活我们的mysql。

然后,启动项目,会报错:no module named MySQLdb

这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb对于py3有很大问题,所以我们需要的驱动是PyMySQL

         所以,我们只需要找到项目名文件下的__init__,在里面写入:

                 import pymysql

                 pymysql.install_as_MySQLdb()

利用pycharm创建数据库步骤(mysql或sqlite)

下图的执行步骤会创建数据库,具体创建那种数据库还是要看你的设置

为了更好的查询修改数据库,我们可以不使用Navicate,而是利用pycharm的Database

1、在pycharm上创建mysql图形化数据库步骤:

然后 ,安装MySQL的驱动(driver),这里需要创建一个密码(我的是123)安装成功后

填入数据库的名字,mysql的用户名和密码,然后就可以进行连接了

成功后点击右下角的apply和OK。

这是你就可以看到数据库里的表和内容了:

是不是很方便呢?

如果你用的是sqlite数据库就更简单了,安装完驱动后,直接将sqlite拖动到Database就可以了:

时间: 2024-07-31 04:14:38

Djanjo基础篇的相关文章

Djanjo基础篇之数据库选择及相关操作

在djanjo框架中我们最常用的框架分别就是mysql和sqlit了,下面我们将分别讲述一下这俩种数据库的基础必备知识 mysql 一.利用命令创建(在终端上执行) 1.首先创建一个project项目 djanjo—admin startproject project名字 2.创建app(首先必须利用cd切换到该project下面) Python3 startapp APP名字 3.运行程序 python3 manage.py runserver 127.0.0.1:8009 二.利用pycha

oracle(sql)基础篇系列(五)&mdash;&mdash;PLSQL、游标、存储过程、触发器

  PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语言是为了补充SQL语言的,是带有了分支和循环的语言. PL/SQL 语法 基本数据类型声明 declare v_name varchar2(20); v_temp number(1); v_count binary_integer := 0; v_sal number(7,2) := 4000.00

Hybrid APP基础篇(四)-&gt;JSBridge的原理

说明 JSBridge实现原理 目录 前言 参考来源 前置技术要求 楔子 原理概述 简介 url scheme介绍 实现流程 实现思路 第一步:设计出一个Native与JS交互的全局桥对象 第二步:JS如何调用Native 第三步:Native如何得知api被调用 第四步:分析url-参数和回调的格式 第五步:Native如何调用JS 第六步:H5中api方法的注册以及格式 进一步完善JSBridge方案 思路 实现 注意 完整的JSBridge 完整调用流程图 另外实现:不采用url sche

网络基础篇----计算机网络基本概述(1)

享受生活  热爱挑战                                                                刘明远分享    一   计算机网络基本概述(1) 每章一段话: 不要让自己闲下来,给自己找些事情做.哪怕是看看书. 正文   (提示:本章内容比较无聊,最好当看故事一样来看,不必记下只需了解,内容基础) 1什么是计算机网络 号称新的"电力火花"是以计算机.通信.信息技术为支撑的计算机网络技术. 计算机网络将两台或多台计算机通过电缆或网络设

js调试系列: 源码定位与调试[基础篇]

js调试系列目录: - 如果看了1, 2两篇,你对控制台应该有一个初步了解了,今天我们来个简单的调试.昨天留的三个课后练习,差不多就是今天要讲的内容.我们先来处理第一个问题:1. 查看文章下方 推荐 这个功能所调用的函数源码其实非常简单,点放大镜选中那个推荐即可.这个  votePost(cb_entryId,'Digg')  就是推荐按钮所调用的函数了,是不是非常简单. 第二个问题,定位到函数所在文件位置.其实也是非常简单的,当然,不熟悉控制台的朋友也许不知道怎么看.我在控制台输入 voteP

DOM系列---基础篇

DOM (Document Object Model) 即文档对象模型, 针对 HTML 和 XML 文档的 API (应用程序接口) .DOM 描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分.DOM 产生于 网景公司及微软公司创始的 DHTML(动态 HTML) ,但现在它已经成为表现和操作页面标记的真正跨平台.语言中立的方式. DOM 中的三个字母: D(文档)可以理解为整个 Web 加载的网页文档: O(对象)可以理解为类似 window 对象之类的东西,可以调用属性

深入理解iPhone数据持久化(手把手教你iphone开发 – 基础篇)

在所有的移动开发平台数据持久化都是很重要的部分:在j2me中是rms或保存在应用程序的目录中,在symbian中可以保存在相应的磁盘目录中和数据库中.symbian中因为权限认证的原因,在3rd上大多数只能访问应用程序的private目录或其它系统共享目录.在iphone中,apple博采众长,提供了多种数据持久化的方法,下面笔者会逐个进行详细的讲解. iphone提供的数据持久化的方法,从数据保存的方式上讲可以分为三大部分:属性列表.对象归档.嵌入式数据库(SQLite3).其他方法. 一.属

Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编译,所以借此篇内容说明一下原由并为之后文章的学习做准备. 即使本片内容只是在围绕一个小小的HelloWorld程序开展,但还是希望朋友们不要急于求成,"欲速则不达". 文章整体思路: 我们循序渐进地来看,一个Qt应用的完成有以下一个重要的步骤: 项目创建->源码编译->程序运行

php面试题汇总二(基础篇附答案)

介绍一些php常见面试题及答案,都是平时面试的时候经常会遇到的,小伙伴们仔细了解下吧.接着上一篇php面试题汇总一(基础篇附答案) 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中:而链接到当前页面的URL记录在预定义变量(2)中. 答:echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"]; 2:数组函数 arsort 的作用是(6):语句 error_reporting(2047)的作用是(7