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 相关文章推荐
pygame学习笔记(2):画点的三种方法和动画实例
Apr 15 Python
Python中返回字典键的值的values()方法使用
May 22 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
Python使用pickle模块存储数据报错解决示例代码
Jan 26 Python
Python中将dataframe转换为字典的实例
Apr 13 Python
python中的turtle库函数简单使用教程
Jul 23 Python
python中字符串内置函数的用法总结
Sep 13 Python
24式加速你的Python(小结)
Jun 13 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
200行python代码实现贪吃蛇游戏
Apr 24 Python
jupyter 添加不同内核的操作
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实现维护文件代码
2007/06/14 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
js中精确计算加法和减法示例
2014/03/28 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
深入浅析javascript立即执行函数
2015/10/23 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
JavaScript继承与聚合实例详解
2019/01/22 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
Python实现曲线点抽稀算法的示例
2017/10/12 Python
numpy中索引和切片详解
2017/12/15 Python
Python Pandas 箱线图的实现
2019/07/23 Python
pytorch打印网络结构的实例
2019/08/19 Python
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
写给学生的新学期寄语
2014/01/18 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
《在家里》教后反思
2014/03/01 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
社区党员干部承诺书
2015/05/04 职场文书
2016年会开场白台词
2015/06/01 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
初中团支书竞选稿
2015/11/21 职场文书
python使用shell脚本创建kafka连接器
2022/04/29 Python