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 将字符串转换成字典dict
Mar 24 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
Python实现微信好友的数据分析
Dec 16 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
利用Python脚本批量生成SQL语句
Mar 04 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
Python通过socketserver处理多个链接
Mar 18 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
如何通过一篇文章了解Python中的生成器
Apr 02 Python
numpy array找出符合条件的数并赋值的示例代码
Jun 01 Python
Python中np.random.randint()参数详解及用法实例
Sep 23 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编码规范的深入探讨
2013/06/06 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
Javascript的匿名函数小结
2009/12/31 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
JavaScript的数据类型转换原则(干货)
2018/03/15 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
分析在Python中何种情况下需要使用断言
2015/04/01 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
Python实现的三层BP神经网络算法示例
2018/02/07 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
详解Python 循环嵌套
2020/07/09 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
美国羊皮公司:Overland
2018/01/15 全球购物
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
创先争优制度
2014/01/21 职场文书
成语的广告词
2014/03/19 职场文书
2014年三万活动总结
2014/04/26 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
先进党组织事迹材料
2014/12/26 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
小数乘法教学反思
2016/02/22 职场文书