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中的日志模块logging
Jun 19 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
Jun 23 Python
python中numpy包使用教程之数组和相关操作详解
Jul 30 Python
Python断言assert的用法代码解析
Feb 03 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
Python操作mongodb的9个步骤
Jun 04 Python
Python虚拟环境库virtualenvwrapper安装及使用
Jun 17 Python
高考考python编程是真的吗
Jul 20 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 26 Python
Python爬虫之自动爬取某车之家各车销售数据
Jun 02 Python
Python实现排序方法常见的四种
Jul 15 Python
python 标准库原理与用法详解之os.path篇
Oct 24 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水印技术
2007/02/14 PHP
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
var与Javascript变量隐式声明
2009/09/17 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
Javascript 实现复制(Copy)动作方法大全
2014/06/20 Javascript
javascript 回调函数详解
2014/11/11 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
使用Python编写提取日志中的中文的脚本的方法
2015/04/30 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
2018/01/31 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
python对象与json相互转换的方法
2019/05/07 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
什么是索引指示器
2012/08/20 面试题
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
银行开业庆典方案
2014/02/06 职场文书
求职者怎样写自荐信
2014/04/13 职场文书
一年级小学生评语
2014/04/22 职场文书
质量月口号
2014/06/20 职场文书
关爱空巢老人感想
2015/08/11 职场文书
Pillow图像处理库安装及使用
2022/04/12 Python