我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python基础(Django)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python基础(Django)

介绍Django之前,先来明确几个基础概念:

1、什么是Web框架?

    Web框架其实是建立web应用的一种方式,它为应用程序提供一套程序框架,这样开发者可以专注于编写清晰、易维护的代码,而无需从头做起。

    他们基本上都以相同的方式工作的:

    1、接收HTTP请求

    2、根据请求分派处理其的代码

    3、通过代码产生HTML页面

    4、创建带有内容的HTTP响应

2、什么是MVC和MTV?

    MVC:其实就是Models(模型)、Views(视图)、Controller(控制器)的简称。

      模型:用来维护数据和定义数据的访问方法

      视图:用于数据的展示,也可以称为用户接口

      控制器:用于处理用户请求逻辑,先调用模型获取数据,再调用视图展示数据。


    MTV:其实是Models(模型)、Templates(模板)、Views(视图)的简称。

       模型:用来维护数据和定义数据的访问方法

      模板:用于数据的展示,对应MVC模式中的Views

      视图:用于指定某一特定URL的回调函数,描述了所要展现的数据,具体的展现交给模板


关于Django

Django前世今生就不做介绍,只说一点,它是MTV模式的。直接开始介绍使用(Tips:以下介绍中应用和app两个词表示的都是项目下的应用):

1、安装

 官方下载:https://www.djangoproject.com/download/

 推荐直接pip安装:pip install Django==1.9.4


2、配置settings.py

 2-1、区分测试环境和生产环境:      

    import socket

    if socket.gethostname() == 'Test-Hostname':

        #测试环境的一些配置,比如DATABASES配置,DEBUG开启情况等

    else:

        #生产环境的配置


 2-2、设置允许访问此项目的主机列表

    ALLOWED_HOSTS = ['*'] # *表示允许所有


 2-3、注册应用,这个操作一般是在创建应用之后才会用到。 

    INSTALLED_APPS = ('应用名称',)


 2-4、关闭CSRF(跨站请求伪造)防御,此操作适用于不太了解CSRF的同学,若不关闭,前端将不能POST提交数据到后台。关闭方法为找到此配置项然后注释掉即可。

    MIDDLEWARE_CLASSES = (#'django.middleware.csrf.CsrfViewMiddleware',)


 2-5、配置静态资源的目录(js、css、img等资源),需要增加配置,然后在项目目录下新建相应的目录即可。

    STATICFILES_DIRS = (
        os.path.join(BASE_DIR,'static'),

    )


 2-6、配置模板文件目录(html文件),需要增加配置,然后在项目目录下新建相应的目录即可。(1.9版本的django默认已配置)  

    TEMPLATE_DIRS = (

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

    )


 2-7、关于session的配置    

    SESSION_EXPIRE_AT_BROWSER_CLOSE = True    #关闭浏览器时session自动过期

    SESSION_COOKIE_AGE = 60*120         #设置浏览器cookie过期时间,60秒*120  


3、使用:步骤大概分为:创建项目、创建应用、配置规则

    常用命令:      

    django-admin.py startproject project_name    #创建项目

    python manage.py startapp app_name        #在项目中创建应用

    python manage.py syncdb              #创建(同步)数据库(Django1.9中已弃用)

    python manage.py makemigrations          

    python manage.py migrate             #这两条命令效果等于syncdb

    python manage.py createsuperuser          #创建管理员账户

   python manage.py runserver 0.0.0.0:8000      #启动服务,绑定IP:PORT


    3-1、创建项目:

        3-1-1、手动创建一个目录,如:mkdir /project

        3-1-2、进入该目录创建一个项目,执行django-admin.py startproject 项目名称

            如:django-admin.py startproject P1

    3-2、创建应用:

        3-2-1、进入项目目录,如:cd /project/P1

        3-2-2、执行django-admin.py startapp 应用名称 

            如:django-admin.py startapp app01

    3-3、配置规则:

        3-3-1、修改项目的urls.py,定义URL访问规则(路由规则)

        3-3-2、修改应用的views.py,定义URL的回调函数

     3-4、启动django

    

 Django具体各个部分的配置和使用请继续往下看。


Django的配置        

一、Django路由系统

  说明:Django中每一个请求的url必须有一个相应的函数来处理,当请求到达时会根据urls.py文件配置的规则从上往下匹配,匹配一条则不再往下匹配。

  配置文件:urls.py

  配置方式:

    1、静态路由:一个url对应一个views中的函数。

        例:url(r'^index/$', views.index),

    2、动态路由:多个url对应一个views中的函数,此处的url多为正则匹配。

        例:url(r'^index/(.*)/$', views.index),

    3、默认路由:当此条规则之上的所有规则都没有匹配上的时候,它会最终匹配所有。一般用于处理请求地址不存在的情况。

        例:url(r'.*', views.warn),

    4、分类路由:当一个项目有多个app的时候,根据不同的app对路由规则进行一次分类。那个app的请求就由那个app的urls来处理。

        例:url(r'^app01/',include('app01.urls')), #将所有以app01/开头的url请求交给app01目录下的urls.py来处理。

       实现分类路由需要事先做两个操作:

        1、在应用目录(app01)下新建一个urls.py文件。可以直接把项目下的urls.py拷贝过去,然后手动修改内容,在这里面配置的就是app01应用的所有路由规则。

        2、修改项目目录下的urls.py文件,首先导入include方法(from django.conf.urls import include),然后配置路由分类规则,多个应用则重复这两步操作。


二、Django中间件

  说明:django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。

  配置文件:settings.py

  配置方式:

    MIDDLEWARE_CLASSES = (这里面配置的都是中间件)

  中间件可以自定义,自定义的意义在于可以在每个请求达到或返回的时候做出一些自定义的处理操作。比如日志记录、IP限制等。

  但是,这里不做描述。


三、Django缓存

  说明:缓存的意义就是缓存(听上去好像是废话,不过Django的缓存功能不常用)。

  1、配置(settings.py中加入)

CACHES = {

    'default': {

        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',#使用文件缓存

        'LOCATION': os.path.join(BASE_DIR, 'cache'),    #文件名为cache

        'TIMEOUT': 600,    #缓存超时时间为600秒

        'OPTIONS': {

            'MAX_ENTRIES': 1000    #最大缓存条目数为1000

        }

    }

} 

  2、应用

from django.shortcuts import render, HttpResponse

from django.views.decorators.cache import cache_page

 

@cache_page(60 * 15)    #以装饰器的形式配置,在哪个函数上面,就缓存哪个函数return的数据

def func(request):

    return HttpResponse('xxx')


四、cookie和session

   说明:cookie是一个字符串,保存于客户端(浏览器)本地(根据cookie类型的不同可保存在内存,也可保存在硬盘)。

      session保存在服务器端,存储与客户端会话的所有信息。

   在Django中的用处:

    1、用于判断用户是否已登录

    2、根据不同的用户返回不同的内容

   工作原理:

    当客户端(浏览器)访问服务器时,服务器会为本次会话创建一个Seesion,同时生成一个唯一的SessionID,用该SessionID为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,也就是保存在Cookie中,用户提交请求时,会同时将这一SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。

   用法:

    1、request.session['username'] = username    #往session中存储一个值(key,value的方式存储)

     2、request.session.get('username')    #根据key从session中获取一个值

     3、del request.session['username']    #根据key从session中删除一个值


五、模板

 说明:Django中的模板其实就是一个嵌套着各种模板标签的html页面。模板也有自己的语言,语言在模板中以模板标签的形式存在。当用户访问一个页面的时候,Django会读取views中定义的模板,然后将Model中获取的数据插入到模板中,最后将渲染完成的页面返回给用户。

 使用:

    一、模板语言

     1、变量

     {{ 变量名 }}    #两个大括号中定义的是一个变量,变量的值一般是由后台views中以同样的名称来返回赋值。


      2、for循环

      {% for item in item_list %}    #item_list是一个列表,值是由后台views中以同样的名称来返回赋值。

        <p>` item `</p>

      {% endfor %}


     3、if判断

      {% if ordered_warranty %}      #ordered_warranty是一个变量,值是由后台views中以同样的名称来返回赋值。

           html code

       {% else %} 

          html code

       {% endif %}


     4、模板继承:当多个页面需要使用同样的主题样式,只是局部内容不一样时,可以使用模板的继承特性。

      母板:{% block title %}    #title是自定义的一个block名称

         这中间是不希望被继承的html code

        {% endblock %}

      子板:{% extends "base.html" %}  #在子板页面的最顶部配置,base.html是母板的名称 

        {% block title %}    #title是母板中定义的block名称

           这中间是不继承于母版 而是自己自定义的html code

           {% endblock %}

      另类继承方法:{% include 'some.html' %}   #将some.html中的所有内容加载到当前标签的位置 

    

  二、自定义simple_tag(需要在settings.py注册当前app,不然django无法找到自定义的simple_tag)

    1、在app中创建templatetags模块

    2、在templatetags模块中创建tag.py (tag为自定义的名称)   

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from django import template
from django.utils.safestring import mark_safe
from django.template.base import resolve_variable,Node,TemplateSyntaxError

register = template.Library()

@register.simple_tag
def my_simple_time(v1,v2,v3):    
    return v1+v2+v3

@register.simple_tag
def my_input(id,arg):
    result = "<input type='text', id='%s' class='%s'>"%(id,arg,)
    return mark_safe(result)

   3、在html中导入之前创建的tag.py(注意导入时文件名不要加.py)  

{% load tag %}

   4、使用simple_tag,根据tag.py中定义的函数的要求传入参数

{% my_simple_time 1 2 3 %}
{% my_input 'id' 'hide' %}

   5、完整的html例子

{% load tag %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <h1>{{ name }}</h1>
    {% my_simple_time 1 2 3 %}
    {% my_input 'id' 'hide' %}
</body>
</html>

 

  三、模板的执行  

from django.shortcuts import render,HttpResponse
def index(request):
    item_list2 = ['a','b','c']
    return render(request,'index.html',{'item_list':item_list2})
    #index.html是模板文件,'item_list'是模板文件中定义的变量名称,item_list2是变量的赋值,如果有多个变量需要赋值,则用,逗号隔开,(以字典的形式来给前端页面的变量赋值)。

 def warn(request):
     HttpResponse('Page not found')    #直接返回一个字符串


六、Form和Model

   由于这俩哥们内容比较多同时非常重要,将另起一篇博文来介绍。


博客的部分内容和思路整理自武沛齐的博客。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python基础(Django)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python基础(Django)

介绍Django之前,先来明确几个基础概念:1、什么是Web框架?    Web框架其实是建立web应用的一种方式,它为应用程序提供一套程序框架,这样开发者可以专注于编写清晰、易维护的代码,而无需从头做起。    他们基本上都以相同的方式工
2023-01-31

python框架django基础指南

Django简介: Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。不过在Django实际使用中,Django更关注的是模型(Model)、模板(Template)和视图
2022-06-04

django基础(一)

项目的创建和启动(venv3) [vagrant@localhost ~]$ cd /vagrant/(venv3) [vagrant@localhost vagrant]$ django-admin startproject devops
2023-01-31

Python全栈开发之Django基础

No.1 MVC&MTVMVCM全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作V全拼为View,用于封装结果,生成页面展示的html内容C全拼为Controller,用于接收请求,处理业务逻辑,与Mode
2023-01-31

Django基础之(十)DRF

简介官方文档RequirementsREST framework requires the following:Python (2.7, 3.4, 3.5, 3.6, 3.7)Django (1.11, 2.0, 2.1)The follo
2023-01-31

Python基础-Python基础使用

上篇文章 Python基础-初识Python 我们已经知道了什么是Python,Python的用处、和Python的解释器、Python的安装,这篇文章,我们主要讲Python的使用入门本文防盗链:http://python789.blog
2023-01-31

django-模板层基础2

1、模板的导入 {% include 模板名%} 首先在你的的项目中,需要很多地方用到同一个组件(相对于头部,你进行每个页面的切换,网页最上面的头  部不需要改变),那么这样我们可以把那个头部重新写在一个模板中,其他每个页面需要
2023-01-30

Python基础教程:一次性搞定 Django Form

最近在项目上用到了 Django 的自带的 Form 表单,遇到了一些坑,今天给大家出的这篇Python基础教程也是做了一个简单的总结,大家可以对号出坑。Form 基础介绍首先让我们先来了解下 Django 中 Form 表单的基本用法。D
2023-06-02

Python基础——1基础

输出print(‘把子肉爱上热干面’,‘哈哈’)  # ‘,’输出为空格输人 name = input(‘提示的内容’)/浮点除法  %.6f//地板除法  整除%  取余python编码问题(采用Unicode编码)ord(‘A’) =
2023-01-30

day 52 Django基础一之web

django第一天本节目录一 web框架的本质及自定义web框架二 模板渲染JinJa2三 MVC和MTV框架四 Django的下载安装五 基于Django实现的一个简单示例一 web框架的本质及自定义web框架  我们可以这样理解:所有的
2023-01-31

Python基础篇-Python基础语法

为什么学习pythonhttp://www.apelearn.com/bbs/thread-7739-1-1.html Python的安装 getconf LONG_BIT     查看系统版本多少位 rpm -q python uname
2023-01-31

day 71 Django基础六之ORM

本节目录一 锁二 事务三 xxx四 xxx五 xxx六 xxx七 xxx八 xxx一 锁  行级锁    select_for_update(nowait=False, skip_locked=False) #注意必须用在事务里面,至于如何
2023-01-31

Python基础--Python3基础语

Python3 基础语法编码默认情况下,Python3源码文件以UTF-8编码,所有字符串都是Unicode字符串。当然也可以为源码文件指定不同的编码,例如:# -*- coding: cp-1252 -*-标识符1.第一个字符必须是字母表
2023-01-31

Python基础

主要是复习时总结自己不太熟悉的知识点了(面向Internet的总结)。函数的参数位置参数——按位置依次对应关键字参数——按“键值对”对应func('hello', val = 1)调用时:若有位置参数,位置参数必须在关键字参数的前面,但关键
2023-01-30

python 基础

#列表是python最常用的数据类型,它可以作为一个方括号内的逗号分隔值出现列表的数据类型不需要相同的类型创建一个列表,只有在方括号([])以逗号(,)分割开即可,不需要相同的数据类型列表表示方式list1=['gao_wang','li_
2023-01-31

web开发框架之Django基础

在脚本中如何进行Django的运行if __name__ == '__main__': import os import django # 注意路径(当前所在的位置,要加载Django的配置文件) os.enviro
2023-01-30

Python基础语法(Python基础知识点)

Python与Perl,C和Java语言等有许多相似之处。不过,也有语言之间有一些明确的区别。本章的目的是让你迅速学习Python的语法。 第一个Python程序: 交互模式编程: 调用解释器不经过脚本文件作为参数,显示以下提示:$ pyt
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录