返回顶部
首页 > 资讯 > 后端开发 > Python >Python基础(Django)
  • 483
分享到

Python基础(Django)

基础PythonDjango 2023-01-31 02:01:16 483人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

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

介绍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、配置静态资源的目录(jsCSS、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

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


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

--结束END--

本文标题: Python基础(Django)

本文链接: https://lsjlt.com/news/185560.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python基础(Django)
    介绍Django之前,先来明确几个基础概念:1、什么是Web框架?    Web框架其实是建立web应用的一种方式,它为应用程序提供一套程序框架,这样开发者可以专注于编写清晰、易维护的代码,而无需从头做起。    他们基本上都以相同的方式工...
    99+
    2023-01-31
    基础 Python Django
  • Python基础(Django三——Model)
    本篇内容接上篇Python基础(Django二)七、Model1、说明:Model是Django为方便程序操作数据库而诞生的,使用的是ORM模式。对象关系映射(Object Relational Mappi...
    99+
    2024-04-02
  • python框架django基础指南
    Django简介: Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。不过在Django实际使用中,Django更关注的是模型(Model...
    99+
    2022-06-04
    框架 基础 指南
  • django基础(一)
    项目的创建和启动 (venv3) [vagrant@localhost ~]$ cd /vagrant/ (venv3) [vagrant@localhost vagrant]$ django-admin startproject de...
    99+
    2023-01-31
    基础 django
  • Python全栈开发之Django基础
    No.1 MVC&MTV MVC M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作 V全拼为View,用于封装结果,生成页面展示的html内容 C全拼为Controller,用于接收请求,处理业务...
    99+
    2023-01-31
    基础 Python Django
  • Django基础之(十)DRF
    简介 官方文档 Requirements REST framework requires the following: Python (2.7, 3.4, 3.5, 3.6, 3.7) Django (1.11, 2.0, 2.1) ...
    99+
    2023-01-31
    基础 Django DRF
  • Django框架基础学习
    Django安装python下载地址 http://www.python.org/download/releases/3.3.4/Django的下载地址:https://www.djangoproject....
    99+
    2024-04-02
  • django-模板层基础2
    1、模板的导入 {% include 模板名%} 首先在你的的项目中,需要很多地方用到同一个组件(相对于头部,你进行每个页面的切换,网页最上面的头  部不需要改变),那么这样我们可以把那个头部重新写在一个模板中,其他每个...
    99+
    2023-01-30
    模板 基础 django
  • Python基础教程:一次性搞定 Django Form
    最近在项目上用到了 Django 的自带的 Form 表单,遇到了一些坑,今天给大家出的这篇Python基础教程也是做了一个简单的总结,大家可以对号出坑。Form 基础介绍首先让我们先来了解下 Django 中 Form 表单的基本用法。D...
    99+
    2023-06-02
  • Python基础——1基础
    输出 print(‘把子肉爱上热干面’,‘哈哈’)  # ‘,’输出为空格 输人 name = input(‘提示的内容’) /浮点除法  %.6f //地板除法  整除 %  取余 python编码问题 (采用Unicode编码) ...
    99+
    2023-01-30
    基础 Python
  • Python基础-Python基础使用
    上篇文章 Python基础-初识Python 我们已经知道了什么是Python,Python的用处、和Python的解释器、Python的安装,这篇文章,我们主要讲Python的使用入门本文防盗链:http://python789.blog...
    99+
    2023-01-31
    基础 Python
  • Python基础篇-Python基础语法
    为什么学习pythonhttp://www.apelearn.com/bbs/thread-7739-1-1.html Python的安装 getconf LONG_BIT     查看系统版本多少位 rpm -q python uname...
    99+
    2023-01-31
    基础 语法 Python
  • Python基础--Python3基础语
    Python3 基础语法编码默认情况下,Python3源码文件以UTF-8编码,所有字符串都是Unicode字符串。当然也可以为源码文件指定不同的编码,例如:# -*- coding: cp-1252 -*-标识符1.第一个字符必须是字母表...
    99+
    2023-01-31
    基础 Python
  • Django基础之Model创建表
    一、创建单表models.py#!/usr/bin/env python # -*- coding:utf-8 -*- from __future__&nb...
    99+
    2024-04-02
  • day 71 Django基础六之ORM
        本节目录 一 锁 二 事务 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 锁   行级锁     select_for_update(nowa...
    99+
    2023-01-31
    基础 day ORM
  • day 52 Django基础一之web
      django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单示例 一 w...
    99+
    2023-01-31
    基础 day web
  • Python基础
    主要是复习时总结自己不太熟悉的知识点了(面向Internet的总结)。 函数的参数 位置参数——按位置依次对应 关键字参数——按“键值对”对应 func('hello', val = 1) 调用时:若有位置参数,位置参数必须在关键字参...
    99+
    2023-01-30
    基础 Python
  • python 基础
    #列表是python最常用的数据类型,它可以作为一个方括号内的逗号分隔值出现 列表的数据类型不需要相同的类型 创建一个列表,只有在方括号([])以逗号(,)分割开即可,不需要相同的数据类型 列表表示方式 list1=['gao_wang',...
    99+
    2023-01-31
    基础 python
  • web开发框架之Django基础
      在脚本中如何进行Django的运行 if __name__ == '__main__': import os import django # 注意路径(当前所在的位置,要加载Django的配置文件) ...
    99+
    2023-01-30
    框架 基础 web
  • Python基础语法(Python基础知识点)
    Python与Perl,C和Java语言等有许多相似之处。不过,也有语言之间有一些明确的区别。本章的目的是让你迅速学习Python的语法。 第一个Python程序: 交互模式编程: 调用解释器不经过脚本文件...
    99+
    2022-06-04
    基础 知识点 语法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作