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 相关文章推荐
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
python中enumerate函数用法实例分析
May 20 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
python实现发送邮件及附件功能
Mar 02 Python
Python中实现switch功能实例解析
Jan 11 Python
Python无损音乐搜索引擎实现代码
Feb 02 Python
Python的CGIHTTPServer交互实现详解
Feb 08 Python
Python利用openpyxl库遍历Sheet的实例
May 03 Python
Python实现注册、登录小程序功能
Sep 21 Python
详解Python使用Plotly绘图工具,绘制甘特图
Apr 02 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 Python
python 删除系统中的文件(按时间,大小,扩展名)
Nov 19 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中的超全局变量
2006/10/09 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
jQuery实现动画效果的简单实例
2014/01/27 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
Django保护敏感信息的方法示例
2019/05/09 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
一道输出判断型Java面试题
2014/10/01 面试题
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
农业资源与环境专业自荐信范文
2013/12/30 职场文书
优秀党员主要事迹
2014/01/19 职场文书
初一体育教学反思
2014/01/29 职场文书
运动会解说词100字
2014/01/31 职场文书
企业承诺书格式
2014/05/21 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书