分享

django

 印度阿三17 2019-02-13

Django 是从真实世界的应用中成长起来的,它是由 堪萨斯(Kansas)州 Lawrence 城中的一个 网络开发小组编写的。 它诞生于 2003 年秋天,那时 Lawrence Journal-World 报纸的 程序员 Adrian Holovaty 和 Simon Willison 开始用 Python 来编写程序。

当时他们的 World Online 小组制作并维护当地的几个新闻站点, 并在以新闻界特有的快节奏开发环境中逐渐发展。 这些站点包括有 LJWorld.com、Lawrence.com 和 KUsports.com, 记者(或管理层) 要求增加的特征或整个程序都能在计划时间内快速的被建立,这些时间通常只有几天 或几个小时。 因此,Adrian 和 Simon 开发了一种节省时间的网络程序开发框架, 这是在截止时间前能完成程序的唯一途径。

2005 年的夏天,当这个框架开发完成时,它已经用来制作了很多个 World Online 的站点。 当时 World Online 小组中的 Jacob Kaplan-Moss 决定把这个框架发布为一个开源软件。

从今往后数年,Django是一个有着数以万计的用户和贡献者,在世界广泛传播的完善开源项目。 原来的World Online的两个开发者(Adrian and Jacob)仍然掌握着Django,但是其发展方向受社区团队的影响更大。

这些历史都是相关联的,因为她们帮助解释了很重要的两点。

第一,Django最可爱的地方。Django 诞生于新闻网站的环境中,因此它提供很多了特性(如管理后台),非常适合内容类的网站,如Amazon.com, craigslist.org和washingtonpost.com,这些网站提供动态的,数据库驱动的信息。 (不要看到这就感到沮丧,尽管Django擅长于动态内容管理系统, 但并不表示Django主要的目的就是用来创建动态内容的网站。 某些方面特别高效与其他方面不高效是有区别的,Django在其他方面也同样高效。)

第二,Django的起源造就了它的开源社区的文化。 因为Django来自于真实世界中的代码,而不是 来自于一个科研项目或者商业产品,她主要集中力量来解决Web开发中遇到的问题,同样 也是Django的开发者经常遇到的问题。 这样,Django每天在现有的基础上进步。 框架的开发者对于让开发人员节省时间,编写更加容易维护的程序,同时保证程序运行的效率具有极大的兴趣。 无他,开发者动力来源于自己的目标:节省时间,快乐工作。 (坦率地讲,他们使用了自己公司的产品。)

 

 

安装:

 

自动化安装

#更新依赖库

pip install --upgrade setuptools

#安装指定的版本

pip install Django==2.0.4

 

 

文件式安装

进入到Django文件安装目录,输入命令:

python setup.py install

 

 

安装后打印版本号

python -m django –version

 

 

 

生成Django项目

django-admin startproject mysite

注意:有的django-admin找不到问题,需要配置环境变量

 

 

启动服务

python manage.py runserver

 

 

本地化中间件

'django.mididdleware.locale.LocaleMiddleware',

 

 

路由包括 精准路由和正则路由

#定义首页 首页留空 第二个参数 指定路由方法

    path('',d1.index),

    #再定义一个路由

    path('test',d1.test),

    #定义一个重定向页面

    path('123',d1.re_url),

    #使用多个网址来指向同一个路由方法

    path('456',d1.re_url),

    #定义存储cookie的路由

    path('save_cookie',d1.save_cookie),

    #定义获取cookie的路由

    path('get_cookie',d1.get_cookie),

    #定义删除cookie的路由

    path('del_cookie',d1.del_cookie),

    #定义一个正则路由,可以使用\d数字

    #常用元字符 .匹配所有 \d数字 \D非数字 \w 字母数字_

    #如果在正则路由内,使用()分组,那么django会认为进行路由传参

    # re_path('^test-\d -.*$',d1.test_re)

 re_path('^test-(\d )-(.*)$',d1.test_re)

 

 

 

Cookie 操作

#定义设置cookie(存储)

def save_cookie(request):

    #定义回应

    response = HttpResponse("存储cookie ok")

    #定义过期时间

    expires = datetime(year=2019,month=11,day=20,hour=15,minute=5,second=0)

    #转储为django内置时间

    expires = make_aware(expires)

    #进行存储动作

    response.set_cookie("username","jack",expires=expires)

    #将回应对象返回

    return response

 

#定义获取cookie(取)

def get_cookie(request):

    #定义变量获取cookies属性

    cookies = request.COOKIES

    #从cookies通过key获取value

    username = cookies.get("username","未拿到用户名")

    #将用户名返回

    return HttpResponse(username)

 

 

#定义删除cookie方法

def del_cookie(request):

    #定义response对象

    response = HttpResponse("删除cookie成功")

    #调用delete_cookie()方法来删除cookie

    response.delete_cookie("username")

    #返回response

    return response

 

 

 

 

 

Django 模板 采用了 jinja2模板 但是与flask有一定的出入需要注意

 

#导入模板解析库

from django.shortcuts import render

 

#模板传值

return render(request,'d2_index.html',{'test_str':test_str,'test_int':test_int,'test_list':test_list,'test_dict':test_dict,'content':content,'dt':dt})

 

{# 模板语法输出 #}

{{ test_str }}

    

{# 加法运算 通过调用内置过滤器来实现加法运算 #}

 

{{ test_int | add:-10 }}

 

{#  模板输出list #}

{{ test_list }}

{{ test_list.2 }}

 

{% for item in test_list %}

   {{ item }}

  {# 打印索引 counter 从1开始的计数器 #}

        {{ forloop.counter }}

        {# 打印数组索引 #}

        {{ forloop.counter0 }}

        {#  倒序索引 #}

        {{ forloop.revcounter }}

        

    {% endfor %}

 

    {# 循环嵌套输出 #}

    {% for item in test_dict %}

            {# 取首位和末尾 #}

            姓名:{{ item.name | first }} {{ item.name | last }}    年龄:{{ item.age }}

    {% endfor %}

 

 

 

    {# 大小写互转 #}

    {{ 'jack' | upper }}

    {{ 'ROSE' | lower }}

 

    {# 链式调用 #}

    {{ 'jack' | first | upper }}

 

    {# 返回长度 #}

    {{ '123456' | length }}

 

    {# 截断操作 #}

    截断字符操作{{ content | truncatechars:20 }}

    截断单词操作{{ content | truncatewords:3 }}

 

    {# 格式化日期 #}

    {{ dt | date:"Y-m-d H:i:s" }}

 

 

 

 

 

 

Cookie简易操作

#定义回应

    response = HttpResponse("存储成功")

    #第三个参数也可以传max_age,单位是秒

    response.set_cookie("email",p1,max_age=10)

    #返回回应

    return response

 

来源:http://www./content-4-113651.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多