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中global与nonlocal比较
Nov 21 Python
Python利用Django如何写restful api接口详解
Jun 08 Python
Python爬虫实现(伪)球迷速成
Jun 10 Python
使用PYTHON解析Wireshark的PCAP文件方法
Jul 23 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
Python获取时间戳代码实例
Sep 24 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
基于Django统计博客文章阅读量
Oct 29 Python
python绘制无向图度分布曲线示例
Nov 22 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
用python写爬虫简单吗
Jul 28 Python
Python爬虫 简单介绍一下Xpath及使用
Apr 26 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执行速率优化技巧小结
2008/03/15 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
浅析php header 跳转
2013/06/17 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
python实现感知器算法(批处理)
2019/01/18 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
python中的垃圾回收(GC)机制
2020/09/21 Python
广告词串烧
2014/03/19 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
自主招生教师推荐信
2014/05/10 职场文书
运动会入场口号
2014/06/07 职场文书
治安消防安全责任书
2014/07/23 职场文书
好好学习保证书
2015/02/26 职场文书
上班旷工检讨书
2015/08/15 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书
浅谈Python中对象是如何被调用的
2022/04/06 Python
Nginx 常用配置
2022/05/15 Servers