Django测试平台开发(三)开发博客②

Django 测试平台开发(三)开发博客②

1、上下文管理器

上下文管理器

django提取context中的数据去供模板调用

需求: 所有的页面都需要一个特定的变量

本质: python函数 , 接收一个HttpRequest对象的参数 , 且返回的必须是一个字典

定义上下文管理器
文件名命名不受限, 放置的路径也不受拘束, 可以放在django项目下的任意位置

1、在user文件夹下创建文件process_content.py

1 from . import models
2
3 def category_process(request):
4     print(‘category_process......‘)
5     categories = models.Category.objects.filter(is_delete=False)
6     return {‘nav‘:categories}

2、配置setting.py文件

 1 TEMPLATES = [
 2     {
 3         ‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,
 4         ‘DIRS‘: [os.path.join(BASE_DIR,‘templates‘)],
 5         # os.path.join(BASE_DIR,‘templates‘)没了这句,
 6         # 会显示django.template.exception.TemplateDoesNotExist: index.html
 7         ‘APP_DIRS‘: True,
 8         ‘OPTIONS‘: {
 9             ‘context_processors‘: [
10                 ‘django.template.context_processors.debug‘,
11                 ‘django.template.context_processors.request‘,
12                 ‘django.contrib.auth.context_processors.auth‘,
13                 ‘django.contrib.messages.context_processors.messages‘,
14                 ‘user.process_content.category_process‘
15             ],
16         },
17     },
18 ]

  1 """
  2 Django settings for dj_test project.
  3
  4 Generated by ‘django-admin startproject‘ using Django 2.1.5.
  5
  6 For more information on this file, see
  7 https://docs.djangoproject.com/en/2.1/topics/settings/
  8
  9 For the full list of settings and their values, see
 10 https://docs.djangoproject.com/en/2.1/ref/settings/
 11 """
 12
 13 import os
 14
 15 # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
 16 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 17
 18
 19 # Quick-start development settings - unsuitable for production
 20 # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/
 21
 22 # SECURITY WARNING: keep the secret key used in production secret!
 23 SECRET_KEY = ‘[email protected]#lad3s*!_iwc68#9!_18f1x-!sygom9a#%ma!!kob+wh‘
 24
 25 # SECURITY WARNING: don‘t run with debug turned on in production!
 26 DEBUG = True
 27
 28 ALLOWED_HOSTS = []
 29
 30
 31 # Application definition
 32
 33 INSTALLED_APPS = [
 34     ‘django.contrib.admin‘,
 35     ‘django.contrib.auth‘,
 36     ‘django.contrib.contenttypes‘,
 37     ‘django.contrib.sessions‘,
 38     ‘django.contrib.messages‘,
 39     ‘django.contrib.staticfiles‘,
 40     ‘user.apps.UserConfig‘,
 41 ]
 42
 43 MIDDLEWARE = [
 44     ‘django.middleware.security.SecurityMiddleware‘,
 45     ‘django.contrib.sessions.middleware.SessionMiddleware‘,
 46     ‘django.middleware.common.CommonMiddleware‘,
 47     ‘django.middleware.csrf.CsrfViewMiddleware‘,
 48     ‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
 49     ‘django.contrib.messages.middleware.MessageMiddleware‘,
 50     ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
 51 ]
 52
 53 ROOT_URLCONF = ‘dj_test.urls‘
 54
 55 TEMPLATES = [
 56     {
 57         ‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,
 58         ‘DIRS‘: [os.path.join(BASE_DIR,‘templates‘)],
 59         # os.path.join(BASE_DIR,‘templates‘)没了这句,
 60         # 会显示django.template.exception.TemplateDoesNotExist: index.html
 61         ‘APP_DIRS‘: True,
 62         ‘OPTIONS‘: {
 63             ‘context_processors‘: [
 64                 ‘django.template.context_processors.debug‘,
 65                 ‘django.template.context_processors.request‘,
 66                 ‘django.contrib.auth.context_processors.auth‘,
 67                 ‘django.contrib.messages.context_processors.messages‘,
 68                 ‘user.process_content.category_process‘
 69             ],
 70         },
 71     },
 72 ]
 73
 74 WSGI_APPLICATION = ‘dj_test.wsgi.application‘
 75
 76
 77 # Database
 78 # https://docs.djangoproject.com/en/2.1/ref/settings/#databases
 79
 80 DATABASES = {
 81     ‘default‘: {
 82         ‘ENGINE‘: ‘django.db.backends.sqlite3‘,
 83         ‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlite3‘),
 84     }
 85     # ‘default‘: {
 86     #     ‘ENGINE‘: ‘django.db.backends.mysql‘,
 87     #     ‘NAME‘: ‘db1‘,
 88     #     ‘USER‘: ‘db1‘,
 89     #     ‘PASSWORD‘: ‘db1‘,
 90     #     ‘HOST‘: ‘db1‘,
 91     #     ‘PORT‘: ‘db1‘,
 92     # }
 93 }
 94
 95
 96 # Password validation
 97 # https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators
 98
 99 AUTH_PASSWORD_VALIDATORS = [
100     {
101         ‘NAME‘: ‘django.contrib.auth.password_validation.UserAttributeSimilarityValidator‘,
102     },
103     {
104         ‘NAME‘: ‘django.contrib.auth.password_validation.MinimumLengthValidator‘,
105     },
106     {
107         ‘NAME‘: ‘django.contrib.auth.password_validation.CommonPasswordValidator‘,
108     },
109     {
110         ‘NAME‘: ‘django.contrib.auth.password_validation.NumericPasswordValidator‘,
111     },
112 ]
113
114
115 # Internationalization
116 # https://docs.djangoproject.com/en/2.1/topics/i18n/
117
118 LANGUAGE_CODE = ‘zh-Hans‘
119
120 TIME_ZONE = ‘Asia/Shanghai‘
121
122 USE_I18N = True
123
124 USE_L10N = True
125
126 USE_TZ = False
127
128
129 # Static files (CSS, JavaScript, Images)
130 # https://docs.djangoproject.com/en/2.1/howto/static-files/
131
132 STATIC_URL = ‘/static/‘
133
134 TEMPLATE_DIRS = (os.path.join(BASE_DIR,  ‘templates‘),)
135
136 STATICFILES_DIRS = (
137     os.path.join(BASE_DIR,‘static‘),
138 ) # 用静态文件配置
139
140 # 多媒体路径path
141 MEDIA_ROOT = os.path.join(BASE_DIR,‘static‘) # 上传文件的路径

3、在views.py文件下,把HttpRequest返回的特定变量删除

 1 import datetime
 2 from django.shortcuts import render,HttpResponse
 3 from .models import Category,Article
 4 # Create your views here.
 5
 6 def index(request):
 7     print(‘views...index‘)
 8     article = Article.objects.filter(is_delete=False)
 9
10     data = {‘articles‘:article}
11     return render(request,‘index.html‘,data)
12
13 def category(request,id):
14     print(‘views...index‘)
15     article = Article.objects.filter(is_delete=False,category_id=id)
16
17     data = {‘articles‘:article}
18     return render(request,‘index.html‘,data)

4、再次用浏览器打开index.html页面

2、多对多关联

3、分页

原文地址:https://www.cnblogs.com/zibinchen/p/12219422.html

时间: 2024-08-26 12:34:57

Django测试平台开发(三)开发博客②的相关文章

开源分享:用Python开发的开源博客系统Blog_mini

本博文在51CTO技术博客首发. 开源不易,Python良心之作,真心送给广大朋友,恳请给予支持,不胜感激! 0.Blog_mini送给你们:让每个人都轻松拥有可管理的个人博客 你从未架设过服务器或网站,希望可以接触一下这方面的知识-- 你从未使用过Linux操作系统,希望可以接触一下这方面的知识-- 你是初中生/高中生/大学生,希望能在学业之余锻炼一下自己的IT技能-- 你是Python新手,希望能有一个用Python开发的个人博客-- 你学习Python许久,希望有一个开源的项目可以用来学习

一步步开发自己的博客 .NET版(4、文章发布功能)百度编辑器

前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做个插件,任何网站上的技术文章都可以转发收藏 到本博客. 所以打算写个系类:<一步步搭建自己的博客> 一.一步步开发自己的博客  .NET版(1.页面布局.blog迁移.数据加载) 二.一步步开发自己的博客  .NET版(2.评论功能) 三.一步步开发自己的博客  .NET版(3.注册登录功能) 四

一步步开发自己的博客 .NET版 剧终篇(6、响应式布局 和 自定义样式)

前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做个插件,任何网站上的技术文章都可以转发收藏 到本博客. 所以打算写个系类:<一步步搭建自己的博客> 一步步开发自己的博客  .NET版(1.页面布局.blog迁移.数据加载) 一步步开发自己的博客  .NET版(2.评论功能) 一步步开发自己的博客  .NET版(3.注册登录功能) 一步步开发自己

一步步开发自己的博客 .NET版(5、Lucenne.Net 和 必应站内搜索)

前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做个插件,任何网站上的技术文章都可以转发收藏 到本博客. 所以打算写个系类:<一步步搭建自己的博客> 一步步开发自己的博客  .NET版(1.页面布局.blog迁移.数据加载) 一步步开发自己的博客  .NET版(2.评论功能) 一步步开发自己的博客  .NET版(3.注册登录功能) 一步步开发自己

iOS开发个人独立博客收集

现在国内技术博客网站有很多,如CSDN,CNBlog,ITEye等,论坛的话主要是要cocachina.这里是我收集的iOS开发个人独立博客,文章用搜索引擎比较难搜到,都是牛人: OneV's Den 简介:一个在日本工作的清华哥哥,写的文章有深度 唐巧 简介:粉笔网,iOS主程 zhenby's blog 简介:技术牛人 "我"的开发笔记 简介:专注于iOS.web 技术奇异点 简介:文章太有深度了,基本都在系统层 Kevin Cao's Blog 简介:一个具有艺术家气质的,IT创

Node.js 从零开发 web server博客项目

第1章 课程介绍 包括课程概述.核心模块.核心技术.课程安排.课程收获.讲授方式.学习前提等方面的介绍,让同学们对课程项目有一个直观的了解. 1-1 课程导读 试看第2章 nodejs 介绍 本章主要为了照顾尚未入门或者刚刚入门 nodejs 的同学,介绍 nodejs 的下载.安装和基本使用,以及 nodejs 和前端 javascript 的区别.另外,重点介绍了服务端开发和前端开发思路上的区别,为后续的开发做一个基础的铺垫. 2-1 下载和安装 2-2 nodejs和js的区别 2-3 c

第三版博客装订完毕

html: <div class="header"> <div class="wrap"> <div class="logo"> <a href="http://www.cnblogs.com/qiuge227/"> <img src="http://images.cnblogs.com/cnblogs_com/qiuge227/565381/o_logo.png

第三版博客修改计划

为了让自己在学习中不断进步,随时保持学以致用的心态是尤为重要的.这样,一来让人有一种成就感的同时,也有一种满足感. 二来让你永远保持着一种心态,那就是谦逊,释然. 什么是进步,进步就是在每天的点点滴滴中,有所获,有所得. 什么是付出,付出就是每天你都知道自己在做什么,为什么要做,并为之努力的做. 什么是收获,收获就是即使你看不到它微小的变化,但在不知不觉中让自己仿佛变了一个人似的. 记得,记忆中感受最深的一本书是斯宾塞·约翰逊著作的<谁动了我的奶酪?>(Who Moved My Cheese?

第三次博客

第三次博客 一. 规格发展历史 从20世纪60年代开始,就存在着许多不同的形式规格说明语言和软件开发方法.在形式规格说明领域一些最主要的发展过程列举如下: 1969-1972 C.A.R Hoare撰写了"计算机编程的公理基础(An Axiomatic Basis for Computer Programming)"和"数据表示的正确性证明"两篇开创性的论文,并提出了规格说明的概念. 1974-1975 B.Liskow/S.N. Zilles和J. Guttag引