首页>>后端>>Python->django怎么调用模板方法(2023年最新整理)

django怎么调用模板方法(2023年最新整理)

时间:2023-12-14 本站 点击:0

导读:很多朋友问到关于django怎么调用模板方法的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

django 自定义admin模板问题

你应该用

python django-admin.py来运行

因为在linux下,django-admin.py是可执行文件,所以就执行了

windows下,虽然django-admin.py是可执行文件,但是windows默认用记事本打开此文件,你也许可以设置成默认运行这个文件,但我就不知道怎么搞了

python——Django项目开发:配置项目/static/路径,调用css、img、js等静态文件

在Django项目开发中,不能像正常web开发一样通过 'imgs/bg.jpg' 访问本地静态文件,需要做一些配置,才能实现静态文件的访问。

一、首先在项目根路径下新建一个static文件夹,然后在static文件夹下可以新建相应的css、imgs、js等文件夹,用于存放css、img、js等静态文件。

二、项目配置

1、打开settings.py,在底部添加:

2、打开urls.py,在 urlpatterns 中添加:(注意,如果你在blog目录下也建立了urls.py,那么就得在blog/urls.py中做修改。别忘了import settings):

(不过我经过实测,不加这一个,也可以完成静态文件的访问)

3、在html模板最上面添加:

然后在需要的地方按照这个格式进行调用,如:

最后重新运行项目,img等本地静态文件就可以被django找到了,这时模板对应的页面就可以显示使用img等文件了。

django导入子模板,怎么给子模板数据

操作方法如下:

定义一个母模板base.html,实现子模板继承母模板的样式,并且在继承的基础上可以重写自己页面的新内容。

python django 做了个web ,在登录界面我想直接调用系统的login模板,可是每次登录成功之后就跳到

系统的login.html里包含一个重定向URL的next隐藏域。有这么一行:

input type="hidden" name="next" value="{{ next }}" /

登陆以后跳转到系统默认的/accounts/profile

你把value改成你想要跳转的url或者给next重新传一个url也行

django 中template 怎么使用model自定义的方法

django model中使用多语言支持的快速方法, 该方法通过建立自定义的template tag 选取model中重复的语言field来达到多语言显示的目的.

假设我们有这样一个models.py, 某一个model中包含多个重复的field, 每个重复的field都是用来保存其对应的显示语言:

class MyObject(models.Model):

name = models.CharField(max_length=50)

title_en = models.CharField(max_length=50)

title_es = models.CharField(max_length=100)

title_fr = models.CharField(max_length=100)

description_en = models.CharField(max_length=100)

description_es = models.CharField(max_length=100)

description_fr = models.CharField(max_length=100)

class MyOtherObject(models.Model):

name = models.CharField(max_length=50)

content_en = models.CharField(max_length=200)

content_es = models.CharField(max_length=200)

content_fr = models.CharField(max_length=200)

注意, 我们将下划线和语言代码作为后缀放在对应的field后面, 这将作为一个语言的查找标记.

然后我们在settings.py中添加需要翻译的field名:

TRANSLATION_FIELDS = ('title', 'description', 'content')

在项目目录中添加templatetags目录(不要忘了怎家__init__.py), 并在其中建立lazy_tags.py:

from django import template

from settings import TRANSLATION_FIELDS

register = template.Library()

class LocalizedContent(template.Node):

def __init__(self, model, language_code):

self.model = model

self.lang = language_code

def render(self, context):

model = template.resolve_variable(self.model, context)

lang = template.resolve_variable(self.lang, context)

for f in TRANSLATION_FIELDS:

try:

setattr(model, f, getattr(model, '%s_%s' % (f, lang)))

except AttributeError:

pass

return ''

@register.tag(name='get_localized_content')

def get_localized_content(parser, token):

bits = list(token.split_contents())

if len(bits) != 3:

raise template.TemplateSyntaxError("'get_localized_content' tag takes exactly 2 arguments")

return LocalizedContent(model=bits[1], language_code=bits[2])

为了在template中使用自定义的tag, 我们首先载入:

{% load lazy_tags %}

然后使用自定义tag, 传入object和语言代码, 取的翻译. 比如西班牙语:

{% get_localized_content object 'es' %}

此时, 如果没有语言代码传入, 那么无法使用obj.description调用某一个语言field. 所以我们配合django.core.context_processors.request, context processor一起使用:

TEMPLATE_CONTEXT_PROCESSORS = (

...

'django.core.context_processors.request',

)

我们就能在template中这样使用:

{% get_localized_content object request.LANGUAGE_CODE %}

Django框架中path及re_path中name参数的使用和模板渲染(八)

name参数可以给一个匹配的url地址取名字,一般用于模板,也可以使用reverse进行页面重定向。

1、为APP中的books里面的urls.py(给url取个名字)

2、为APP中books里面的views.py(redirect是重定向,reverse是将url的name解析成url本身的函数)

1、 name参数可以给这个url取一个合适的名字。通过给url取名字,以后在view或者模板中使用这个URL,就只需要通过这个名字就可以了。这样做的原因是防止url的规则更改,会导致其他地方用了这个url的地方都需要更改,但是如果取名字了,就不要做任何改动了。

2、注意事项:

1、模板放在哪?

2、在项目主目录setting.py中进行模板路径配置; 将我们的设置好的存放html模板的templates目录路径添加到DIRS中。

注意:reverse方法里面也可以有kwargs参数,直接将参数传给被reverse解析后要跳转的url路径中的捕获参数,来达到传参的效果。

结语:以上就是首席CTO笔记为大家介绍的关于django怎么调用模板方法的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/33596.html