django小技巧之html模板中调用对象属性或对象的方法


Posted in Python onNovember 30, 2018

环境:依赖最初test2数据库

           python3版本
           多python版本环境

进入,python3虚拟环境,新建项目test4:

]# cd py3/django-test1/
]# django-admin startproject test4

创建应用bookshop:

]# cd test4
]# python manage.py startapp bookshop

修改settings.py主配置文件:

]# vim test4/settings.py
...
#数据库为mysql,使用原来的test2数据库名称:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test2',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '192.168.255.70',
        'PORT': '3306',
    }
}
#添加应用:
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bookshop',
)
#添加模板查找路径:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        ...
]
...

在项目名称目录下,添加模板目录并在其下添加应用的模板目录:

]# mkdir -p templates/bookshop

在主url路由配置文件中,添加查找应用url的路由:

]# vim test4/settings.py
...
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^',include('bookshop.urls',namespace='bookshop')),
]

在应用目录下创建urls.py文件:

]# vim bookshop/urls.py
from django.conf.urls import url
from .  import views
urlpatterns = [
    url(r'\^$',views.index,name='index'),
]

以上基本配置完成,下面演示在模板中调用对象的方法:

定义模型类:

为了不用迁移,定义模型类要和test2数据库结构一样;

]# vim bookshop/models.py
from django.db import models
class BookInfo(models.Model):
    btitle = models.CharField(max_length=20)
    bpub_date = models.DateTimeField(db_column='pub_date') #定义字段名称为pub_date,默认字段名称就是类属性,即默认字段名称为bpub_date
    bread = models.IntegerField()
    bcommet = models.IntegerField()
    isDelete = models.BooleanField()
    #定义表名
    class Meta():
        db_table = 'bookinfo'
    #如果不写上面2行,表名默认为项目名称.类名称,即bookshop.bookinfo
class HeroInfo(models.Model):
    hname = models.CharField(max_length=10)
    hgender = models.BooleanField()
    hcontent = models.CharField(max_length=1000)
    isDelete = models.BooleanField()
    book = models.ForeignKey('BookInfo') #定义外键,此处引号是否可省略,BookInfo先定义就可省略引号,如果后定义则需要使用引号,使用引号绝对没错;在表中字段自动变为book_id
    def showname(self):
        return self.hname

定义视图:

]# vim bookshop/views.py
from django.shortcuts import render
from .models import *
#from models import * #在python2写法
def index(request): #必须接收一个参数
    hero = HeroInfo.objects.get(pk=1) #查询主键(pk)=1的条目
    context = {'hero':hero} #必须为字典格式
    return render(request,'bookshop/index.html',context)

定义index.html模板文件:

]# vim templates/bookshop/index.html
<!DOCTYPE html>
<html>
<head>
    <title>Title</title>
</head>
<body>
{{ hero.hname }}<br><!--调用对象的属性-->
{{hero.showname}}<!--调用对象的方法,但不能给方法传递参数-->
<!--注释
#点号解析顺序:
#1.先把hero作为字典,hname为键查找
#2.再把hero作为对象,hname为属性或方法查找
#3.最后把hero作为列表,hname为索引查找
-->
</body>
</html>

启动web服务:

]# python manage.py runserver 192.168.255.70:8000

报错:Error loading MySQLdb module: No module named 'MySQLdb'
解决:由于在python3版本上使用pymysql库,没有MySQLdb库,则需要配置;

]# vim test4/__init__.py
import pymysql
pymysql.install_as_MySQLdb()

再次启动web服务成功;浏览器访问:http://192.168.255.70:8000/

django小技巧之html模板中调用对象属性或对象的方法

完成验收在html模板文件中调用对象的属性和对象的方法。

Python 相关文章推荐
零基础写python爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
详细介绍Python中的偏函数
Apr 27 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
python调用百度REST API实现语音识别
Aug 30 Python
Python基于plotly模块实现的画图操作示例
Jan 23 Python
python 实现矩阵按对角线打印
Nov 29 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
Apr 22 Python
python中什么是面向对象
Jun 11 Python
如何用 Python 处理不平衡数据集
Jan 04 Python
PyCharm鼠标右键不显示Run unittest的解决方法
Nov 30 #Python
python实现简单名片管理系统
Nov 30 #Python
python3学生名片管理v2.0版
Nov 29 #Python
python实现名片管理系统
Nov 29 #Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 #Python
Python中logging.NullHandler 的使用教程
Nov 29 #Python
Mac下Anaconda的安装和使用教程
Nov 29 #Python
You might like
php array的学习笔记
2012/05/10 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
验证javascript中Object和Function的关系的三段简单代码
2010/06/27 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
Node 升级到最新稳定版的方法分享
2018/05/17 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
python自动化之Ansible的安装教程
2019/06/13 Python
python文本数据处理学习笔记详解
2019/06/17 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
关于Django Models CharField 参数说明
2020/03/31 Python
python压包的概念及实例详解
2021/02/17 Python
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
商务会议邀请函
2014/01/09 职场文书
优秀班组长事迹
2014/05/31 职场文书
唐山大地震的观后感
2015/06/05 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python