从手到尾,手写的DJANGO,不借助命令,效果一样的呢。

import os
import sys
import hashlib
from django.conf import settingsDEBUG = os.environ.get('DEBUG', 'on') == 'on'
SECRET_KEY = os.environ.get('SECRET_KEY', '%jv_4#hoaqwig2gu!eg#^ozptd*a@88u(aasv7z!7xt^5(*i&k')
ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS', 'localhost').split(',')
BASE_DIR = os.path.dirname(__file__)settings.configure(DEBUG=DEBUG,TEMPLATE_DEBUG = True,SECRET_KEY=SECRET_KEY,ALLOWED_HOSTS=ALLOWED_HOSTS,ROOT_URLCONF=__name__,MIDDLEWARE_CLASSES=('django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',),INSTALLED_APPS=('django.contrib.staticfiles',),TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR,'templates').replace('\\', '/'),],'APP_DIRS': True,}],STATICFILES_DIRS=(os.path.join(BASE_DIR, 'static'),),STATIC_URL='/static/',
)from django import forms
from django.conf.urls import url
from django.core.urlresolvers import reverse
from django.core.cache import cache
from django.core.wsgi import get_wsgi_application
from django.http import HttpResponse, HttpResponseBadRequest
from django.shortcuts import render
from django.views.decorators.http import etag
from io import BytesIO
from PIL import Image, ImageDrawclass ImageForm(forms.Form):height = forms.IntegerField(min_value=1, max_value=2000)width = forms.IntegerField(min_value=1, max_value=2000)def generate(self, image_format='PNG'):"""Generate an image of the given type and return as raw bytes."""height = self.cleaned_data['height']width = self.cleaned_data['width']key = '{}.{}.{}'.format(width, height, image_format)content = cache.get(key)if content is None:image = Image.new('RGB', (width, height))draw = ImageDraw.Draw(image)text = '{} X {} demo'.format(width, height)textwidth, textheight = draw.textsize(text)if textwidth < width and textheight < height:texttop = (height - textheight) // 2textleft = (width - textwidth) // 2draw.text((textleft, texttop), text, fill=(255, 155, 5))content = BytesIO()image.save(content, image_format)content.seek(0)cache.set(key, content, 60 * 60)return contentdef generate_etag(request, width, height):content = 'Placeholder: {0} x {1}'.format(width, height)return hashlib.sha1(content.encode('utf-8')).hexdigest()@etag(generate_etag)
def placeholder(request, width, height):form = ImageForm({'height': height, 'width': width})if form.is_valid():image = form.generate()return HttpResponse(image, content_type='image/png')else:return HttpResponseBadRequest("Invalid Image Request")def index(request):example = reverse('placeholder', kwargs={'width': 500, 'height': 500})print example, '#####################'context = {'example': request.build_absolute_uri(example)}print context, '@@@@@@@@@@@@@@@@@@@@@@@'return render(request, 'home.html', context)urlpatterns = (url(r'^image/(?P<width>[0-9]+)x(?P<height>[0-9]+)/$', placeholder, name='placeholder'),url(r'^$', index, name='homepage'),
)application = get_wsgi_application()if __name__ == "__main__":from django.core.management import execute_from_command_lineexecute_from_command_line(sys.argv)

转载于:https://www.cnblogs.com/aguncn/p/6399344.html

重新实践《轻量级DJANGO》这本书相关推荐

  1. 【组队学习】【26期】编程实践(Django网站开发)

    编程实践(Django网站开发) 论坛版块: http://datawhale.club/c/team-learning/28-category/28 开源内容: https://github.com ...

  2. 容器化部署实践之Django应用部署(二)

    上一篇文章有些同学感觉不够详细理解起来有些困难,我再来简单解释一下. 我们在开发的情况下:     浏览器请求→ python manage.py runserver(比如8000) → 到应用代码( ...

  3. 为什么要写《机器学习实践应用》这本书

    预售地址: https://item.jd.com/12114501.html 历经了10个月,<机器学习实践应用>这本书终于面世了.首先呢,因为我的工作比较忙,只能抽一些周末或者是下班以 ...

  4. 基于CSE的微服务架构实践-轻量级架构技术选型

    [摘要] 本文在前一篇"基于CSE的微服务架构实践-基础架构"基础上,介绍了使用CSE进行轻量级架构的技术选型参考.文末提供了基于JWT的微服务认证鉴权方案. 轻量级架构模式下,可 ...

  5. python 软件工程_软件工程实践之 django/python

    outline 本文包括以下内容:outline django: 一个搭建后端服务的工具箱.framework: django vs flask/tornado/spring/laravel rest ...

  6. python 软件工程,软件工程实践之 django/python | 码农网

    软件工程实践系列文章, 会着重讲述实际的工程项目中是如何协作开发软件的. 本文主要介绍了 django/python 系列的 工具 链. outline 本文包括以下内容: outline djang ...

  7. Django项目实践3 - Django模型(字段、数据库操作及模型继承)

    http://blog.csdn.net/pipisorry/article/details/45725953 Django数据库字段类型(Field types) AutoField class A ...

  8. 2022暑期实践(Django教程学习记录)(第三周1)P44靓号管理-分页组件封装

    P44靓号管理-分页组件封装 要解决的问题,分页和搜索功能不能同时用 from django.http.request import QueryDictimport copyquery_dict = ...

  9. 【工程实践】Django系列-Admin站点管理(8)

    1.概述 1.1 内容发布 添加.修改.删除数据库中的内容.站点管理就是为了有一个可视化界面,方便将数据进行展示,方便对数据库中的数据进行操作和管理. 1.2 公共访问 2.配置Admin应用 在se ...

最新文章

  1. WCF中的序列化[上篇]
  2. vivado的综合与实现策略怎样设置
  3. IOSday01 连线和程序标识
  4. Java千百问_03基本的语法(005)_二进制是如何做位运算的
  5. python怎么输入程序代码_学习用 Thonny 写代码: 一个面向初学者的Python IDE
  6. 互联网架构:常用基础中间件介绍
  7. python 热力图_python数据分析:数据缺失机制及利用missingno库对缺失可视化
  8. 西瓜书+实战+吴恩达机器学习(十)监督学习之支持向量机 Support Vector Machine
  9. TODA-MES电池行业解决方案
  10. 矽谷真假U盘测试软件,silicom矽谷真假u盘测试
  11. ecshop二次开发bug(一)
  12. 获取企业微信code
  13. 代码解析 | '树'的数据结构转化
  14. c#字符串的格式化输出
  15. Ubuntu的以太网卡找不到解决方法
  16. 7-22 龟兔赛跑 (20 分)
  17. 条件概率和全概率公式
  18. 智能座舱开启「万物交互」新革命,隐形冠军们如何突围?
  19. 幂级数和函数经典例题_幂级数的和函数怎么求,做题有什么方法吗?
  20. 精彩揭秘,一个高大上的机器人自动化工厂需要哪些标配?

热门文章

  1. JUST技术:探查城市中的异常事件
  2. 从技术角度谈游戏国际化的一些建议:版本管理和文本翻译
  3. 游戏开发者怎么做出以假乱真的画面效果?大气散射渲染了解一下
  4. Java面试题 Java如何进行高效的数组拷贝?【Arrays.copyOf()】
  5. Linux CENTOS6.5 图形命令互转
  6. 在echarts图表外调用echarts的下载功能以及echarts getDataURL图表数据不显示的问题的解决方案...
  7. 撩课-Python-每天5道面试题-第2天
  8. python 列表常用操作(二)
  9. go语言从零学起(二)--list循环删除元素(转载)
  10. listview侧滑删除