Django-QuerySet数据库查询
模型的内容 from django.db import models class Blog(models.Model): name = models.CharField(max_length**=**100) tagline = models.TextField() def __unicode__(self): # _str_ on Python 3 return self.name class Author(models.Model): name = models.CharField(max_length**=**50) email = models.EmailField() def __unicode__(self): # _str_ on Python 3 return self.name class Entry(models.Model): blog = models.ForeignKey(Blog) headline = models.CharField(max_length**=...
Django-cache缓存系统
Django settings 中 cache 默认为 { ‘default’: { ‘BACKEND’: ‘django.core.cache.backends.locmem.LocMemCache’, } } 也就是默认利用本地的内存来当缓存,速度很快。当然可能出来内存不够用的情况,其它的一些内建可用的Backends 有 ‘django.core.cache.backends.db.DatabaseCache’ ‘django.core.cache.backends.dummy.DummyCache’ ‘django.core.cache.backends.filebased.FileBasedCache’ ‘django.core.cache.backends.locmem.LocMemCache’ ‘django.core.cache.backends.memcached.MemcachedCache’ ‘django.core.cache.backends.memcached.PyLibMCCache’ 利用文件系统来缓存: CACHES = { ‘defa...
Django-cookie-session实现
启用session 在视图中使用session # 创建或修改 session: request.session[key] = value # 获取 session: request.session.get(key,default**=**None) # 删除 session del request.session[key] # 不存在时报错 例子:让用户不能评论两次的应用(原来要用session实现不重复点赞) from django.http import HttpResponse def post_comment(request, new_comment): if request.session.get(‘has_commented’, False): return HttpResponse(“You’ve already commented.”) c = comments.Comment(comment**=**new_comment) c.save() request.session[‘has_commented’] =...
Django-form表单
使用GET方法接受表单 \ \ \\ \# 接收请求数据def search(request): request.encoding='utf-8' if 'q' in request.GET: message = '你搜索的内容为: ' + request.GET['q'] else: message = '你提交了空表单' return HttpResponse(message) 使用post方法对表单进行操作 \ {% csrf_token %} \ \ \ \{{ rlt }}\ \# 接收POST请求数据def search_post(request): ctx ={} if request.POST: ctx['rlt'] = request.POST['q'] return render(request, "post.html", ctx)
Django-template
template模板的具体使用 创建模板,目录结构如下: \|-- HelloWorld\|-- manage.py \`-- templates \`-- hello.html 修改配置文件当中TEMPLATES的基础路径 ...TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR+"/templates",], \# 修改位置 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },]...
Django-model
MVC模型中model部分,提供对数据库的操作支持。 配置文件settings.py DATABASES = { ‘default’: { ‘ENGINE’: ‘django.db.backends.mysql’, # 或者使用mysql.connector.django ‘NAME’: ‘test’, ‘USER’: ‘test’, ‘PASSWORD’: ‘test123’,‘HOST’:’localhost’, ‘PORT’:’3306’, } } django-admin.py startapp TestModel 创建模型,目录结构如下 HelloWorld|– TestModel| |– _init_.py| |– admin.py在管理界面中修改应用程序的模型| |– models.py 存储所有的应用程序的模型| |–tests.py 单元测试| |– views.p 应用程序的视图 对models.py的理解 # models.pyfrom django.db import modelsclass Test(models.Model): name ...
Django——三个最关键的对象
其中有一节专门讲了File对象如何上传,然而上一次为这个文件上传苦恼了很久。 重新复习了两个关键对象 HttpRequest对象 .scheme 表示请求的方案http或者https .body原始HTTP请求的正文。包括GET请求的参数,POST请求的表单,媒体对象的二进制文件。 .path 表示请求页面的完整路径,不包含域名,可以用来点赞或者喜欢之后刷新原来的网页 .method HTTP请求的方法GET或者POST .encoding 请求的编码 .GET 一个字典对象,包含HTTP GET的参数 .POST 一个类字典对象,包含了表单数据的请求。 .FILES 一个字段对象,包含所上传的文件。 .COOKIES 标准的python字典,包含所有的cookie。键和值都是字符串 .META 一个python字典,包含HTTP头部信息。 .user 一个用户对象。 .session 一个可以读写的session字典对象。 方法: get_host() 获取主机名127.0.0.1:8000 get_full_path() 返回path和查询字符串**/music...
Django-view
Django工程创建 **django-admin.py startproject HelloWorld** 创建Django项目。其目录结构为:\|-- HelloWorld //项目的容器,内有view控制中心\| \|-- \__init_\_.py //包声明文件\| \|-- settings.py //该Django项目的配置文件\| \|-- urls.py //Django项目的URL声明\| \`-- wsgi.py //该Django项目的WSGI兼容的web服务器入口(python内置服务器程序) \`-- manage.py //与项目相关的命令行工具,实现与Django的交互。 **python manage.py runserver 0.0.0.0:8000** 启动服务器,并将该项目部署到服务器当中。 **HelloWorld/view.py** from django.http import HttpResponsedef hello(request): return HttpResponse("Hello world ! ") v...
Django——关于URL分组匹配问题
**基本原则说明:** - Django会一次匹配列表中的每个URL模式,在遇到第一个请求的URL相匹配的模式时停下来 - 分组传参包括以下内容: - 一个HttpRequest实例。 - 如果正则表达式是无名组,那么正则表达式所匹配的内容将作为位置参数提供给视图。 - 如果正则表达式是命名组,那么正则表达式所匹配的内容将作为关键参数提供给视图。 - 对于GET、POST请求本身的参数不进行匹配。作为扩展参数kwargs提供给视图。 - 如果请求的URL没有匹配到任何一个正则表达式,或者匹配过程中抛出异常,会进行相应的错误处理。 分组参数 关键参数 **匹配分组算法说明:** \> 分组对应参数,是如何传递参数的过程;匹配分组算法,是如何匹配字符串的过程。 - 如果有命名参数,则使用命名参数,忽略非命名参数。 - 否则,将以位置参数传递所有的非命名参数。 - 所有的匹配结果都是字符串 能够通过url函数额外传递多个参数。 终于他妈的明白这种关键参数和位置参数的意思了: 关键...
Django——快捷视图函数
render 使用模板进行渲染 redirect重定向到一个新的url,也就是说我当前没有渲染的视图,我交给另外一个动作来处理,我提供动作必要的参数。所以传递参数到视图的过程绝对不应该用redirect,而是render。 redirect有多种形式。可以是绝对路径、相对路径、动作(视图)名称 + 必要的参数













