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编写生成验证码的脚本的教程
May 04 Python
python中函数传参详解
Jul 03 Python
python smtplib模块实现发送邮件带附件sendmail
May 22 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
基于python if 判断选择结构的实例详解
May 06 Python
Python分布式进程中你会遇到的问题解析
May 28 Python
解决Django后台ManyToManyField显示成Object的问题
Aug 09 Python
Django 返回json数据的实现示例
Mar 05 Python
给ubuntu18安装python3.7的详细教程
Jun 08 Python
详解如何修改python中字典的键和值
Sep 29 Python
python语言实现贪吃蛇游戏
Nov 13 Python
Python实现视频自动打码的示例代码
Apr 08 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
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
封装好的js判断操作系统与浏览器代码分享
2015/01/09 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
js 提取某()特殊字符串长度的实例
2017/12/06 Javascript
微信小程序模拟cookie的实现
2018/06/20 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
python如何调用字典的key
2020/05/25 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
加拿大最大的书店:Indigo
2017/01/01 全球购物
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
ORACLE第二个十问
2013/12/14 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
一套Delphi的笔试题一
2016/02/14 面试题
大学生求职推荐信
2013/11/27 职场文书
业务员的岗位职责
2014/03/15 职场文书
作风建设年度心得体会
2014/10/29 职场文书
财务会计实训报告
2014/11/05 职场文书
工作时间证明
2015/06/15 职场文书
检举信的写法
2019/04/10 职场文书
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
Nginx配置https的实现
2021/11/27 Servers