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中使用select模块实现非阻塞的IO
Feb 03 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
Nov 21 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
django foreignkey外键使用的例子 相当于left join
Aug 06 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
Django stark组件使用及原理详解
Aug 22 Python
python字符串的拼接方法总结
Nov 18 Python
python中的itertools的使用详解
Jan 13 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 Python
Python urllib2运行过程原理解析
Jun 04 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 Python
python在package下继续嵌套一个package
Apr 14 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中用数组的方法设置cookies
2011/04/21 PHP
基于PHP常用函数的用法详解
2013/05/10 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
javascript web对话框与弹出窗口
2009/02/22 Javascript
prototype 中文参数乱码解决方案
2009/11/09 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
javascript返回顶部效果(自写代码)
2013/01/06 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
小程序实现多选框功能
2018/10/30 Javascript
Python实现登录接口的示例代码
2017/07/21 Python
python读写csv文件实例代码
2019/07/05 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
如何提高MySql的安全性
2014/06/19 面试题
教师评优事迹材料
2014/01/10 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
企业总经理岗位职责
2014/02/13 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js