我正在尝试加载我的Django项目中注入的html内部的静态文件:
<div class="bottom-box" id="left">
<span id="title">Banks and cards</span>
{{ card_info |safe}}
</div>
以下是通过card_info
变量注入的代码:
"""
<p id="pay-card">
<img id="pay-box-img" src="{%% static 'img/payment-card.png' %%}" height="14">
<span id="card-number">%s x-%i %s</span>
</p>
"""
问题在于:src="{%% static 'img/payment-card.png' %%}"
。
当我检查HTML页面时,我看到这一行:
src="{% static 'img/payment-card.png' %}"
这是我想要获取的行(取自工作静态文件):
src="/static/img/payment-card.png"
似乎不是rending,我对如何在变量内部获取静态文件链接进行渲染没有丝毫的线索。
修改
我刚注意到的其他东西,我的CSS似乎在加载后似乎不适用于html代码...... 问题已经解决。
澄清上述问题;我在Safari中测试,之前的CSS被不断加载而不是我写的新CSS所以我必须先清除我的cookie然后才能使用新的CSS ......
解决
{% load staticfiles %}
{% for i in payment_info %}
<form class="card_display" method="post" action="/summary/default_swap/">
{% csrf_token %}
<p>
<img id="pay-box-img" src="/static/img/payment-card.png" height="14">
<input type="hidden" name="card-number" value="{{ i.last_4 }}"/>
<input type="submit"/>
<span id="card-number">{{ i.card_type }} x-{{ i.last_4 }} {{i.get_default_display }}</span>
</p>
</form>
{% endfor %}
上面的代码让我成为了我需要的正义。我接受的答案让我得到了这个启示。正如@Kyle所说,上面是通过传递查询集并在HTML中直接迭代它来完成的,以便获得我需要的所需结果...
答案 0 :(得分:1)
我不确定您是否有特定原因通过上下文变量传递模板化的card_info,但您应该使用Django提供的include tag。关于include标记的一个很酷的部分是,所有包含的模板将获得渲染模板时使用的相同上下文。
<强> my_template.html 强>
<div class="bottom-box" id="left">
<span id="title">Banks and cards</span>
{% include "card_info.html" %}
</div>
<强> card_info.html 强>
{% load staticfiles %}
<p id="pay-card">
<img id="pay-box-img" src="{% static 'img/payment-card.png' %}" height="14">
<span id="card-number">%s x-%i %s</span>
</p>
答案 1 :(得分:0)
我们假设您从名为&#34;付款&#34;的Django模型中获取您的卡号。卡号存储在模型的card_number
字段中。在您看来:
from django.views import generic
from myapp.models import Payment
import re
class PaymentView(generic.DetailView):
model = Payment
template_name = 'payments/detail.html'
def get_context_data(self, **kwargs):
context = super(PaymentView, self).get_context_data(**kwargs)
card_number = self.object.card_number
# leave only last digits after final dash
context['card_number'] = re.sub(r'^.*-(\d+)$', r'xxxx-\1', card_number)
return context
在您的模板payments/detail.html
中,您现在只需显示卡号:
{% load static %}
<div class="bottom-box" id="left">
<span id="title">Banks and cards</span>
<p id="pay-card">
<img id="pay-box-img" src="{% static 'img/payment-card.png' %}" height="14">
<span id="card-number">{{ card_number }}</span>
</p>
</div>
将视图连接到网址:
# app/urls.py
from .views import PaymentView
urlpatterns = [
url('^payments/(?<pk>[0-9]+)/$', PaymentView.as_view(), name='payment_view'),
]