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版
Dec 07 Python
python学习手册中的python多态示例代码
Jan 21 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
用实例解释Python中的继承和多态的概念
Apr 27 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
在Python函数中输入任意数量参数的实例
Jul 16 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 Python
python 实现PIL模块在图片画线写字
May 16 Python
解决pycharm修改代码后第一次运行不生效的问题
Feb 06 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 intval的测试代码发现问题
2008/07/27 PHP
php自定义session示例分享
2014/04/22 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
php压缩文件夹最新版
2018/07/18 PHP
Maps Javascript
2007/01/22 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:EE凭借法力虚空拿下4杀
2017/03/30 DOTA
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
python实现淘宝购物系统
2019/10/25 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
2020/04/20 Python
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
机电一体化专业应届生求职信
2013/11/27 职场文书
党建示范点实施方案
2014/03/12 职场文书
贷款委托书范本
2014/04/08 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书
思想品德课教学反思
2016/02/24 职场文书
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python