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多进程同步Lock、Semaphore、Event实例
Nov 21 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
Python常用知识点汇总
May 08 Python
Python函数中参数是传递值还是引用详解
Jul 02 Python
python将excel转换为csv的代码方法总结
Jul 03 Python
Django CBV与FBV原理及实例详解
Aug 12 Python
python统计字符串中字母出现次数代码实例
Mar 02 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
Python爬取梨视频的示例
Jan 29 Python
解决jupyter notebook图片显示模糊和保存清晰图片的操作
Apr 24 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/12/06 PHP
延长phpmyadmin登录时间的方法
2011/02/06 PHP
PHP数组函数知识汇总
2016/05/12 PHP
php无法连接mysql数据库的正确解决方法
2016/07/01 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
Python基于PycURL实现POST的方法
2015/07/25 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
Python实现购物车购物小程序
2018/04/18 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
python绘制雪景图
2019/12/16 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
卡骆驰英国官网:Crocs英国
2019/08/22 全球购物
农业资源与环境专业自荐信范文
2013/12/30 职场文书
给医务人员表扬信
2014/01/12 职场文书
优秀企业获奖感言
2014/02/01 职场文书
大学军训感言200字
2014/02/26 职场文书
品牌服务方案
2014/06/03 职场文书
学生党员检讨书范文
2014/12/27 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL