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在linux系统下获取系统内存使用情况的方法
May 11 Python
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
使用pycharm生成代码模板的实例
May 23 Python
Python带动态参数功能的sqlite工具类
May 26 Python
Django中的Model操作表的实现
Jul 24 Python
Python编程深度学习绘图库之matplotlib
Dec 28 Python
python字符串Intern机制详解
Jul 01 Python
Python银行系统实战源码
Oct 25 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
python 如何上传包到pypi
Dec 24 Python
如何查看python关键字
Jan 17 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使用百度天气接口示例
2014/04/22 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
PHP Include文件实例讲解
2019/02/15 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
javascript 跳转代码集合
2009/12/03 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
Wallis官网:英国女装零售商
2020/01/21 全球购物
认购协议书范本
2014/04/22 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
2014年保管员工作总结
2014/11/18 职场文书
部队2014年终工作总结
2014/11/27 职场文书
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技