在我的应用程序中,我将要求用户输入一些带变量的文本并将其存储到数据库中。像这样...
Parameter
id | para |
---+-----------+
1 | 932580234 |
2 | 865234932 |
并且有一个表格,其中包含这些参数的实际值。
def userpage(request):
url_obj = Url.objects.filter(id=..not_important...)[0]
url = url_obj.url
para1_obj = Parameter.objects.filter(..not_important..)[0]
para1 = para1_obj.para
para2_obj = Parameter.objects.filter(..not_important..)[0]
para2 = para2_obj.para
return render(request, 'userpage.html', {'url':url, 'para1':para1, 'para2':para2})
我想渲染一个html并替换它上面的{{para1}}或{{para2}}。
views.py
You URL is {{ url }}
模板/ userpage.html
You URL is http://example.com/?aaa=932580234
我的期望是
You URL is http://example.com/?aaa={{para1}}
但是,实际的html是
import { NgModule } from '@angular/core';
...
import {
MapModule, MapAPILoader, BingMapAPILoaderConfig,
BingMapAPILoader, WindowRef, DocumentRef,
MapServiceFactory, BingMapServiceFactory
} from "angular-maps";
...
@NgModule({
imports: [
...
MapModule.forRootBing()
...
],
providers: [
...
{
provide: MapAPILoader, deps: [], useFactory: MapServiceProviderFactory
}
...
]
})
如何在“return render ....”之前“预渲染”数据库中的字段? 或者还有其他解决方案吗?
我正在使用python 3.4和django 2.0
谢谢!
答案 0 :(得分:1)
我们可以先将url构建为模板:
url_template = Template(url)
然后我们用给定的参数渲染它:
context = Context({'para1':para1, 'para2':para2})
our_url = url_template.render(context)
然后our_url
被正确渲染,我们可以将其插入到我们的真实模板渲染中:
return render(request, 'userpage.html', {'url': our_url})
这意味着我们会得到类似的东西:
def userpage(request):
url_obj = Url.objects.filter(id=..not_important...)[0]
url = url_obj.url
para1_obj = Parameter.objects.filter(..not_important..)[0]
para1 = para1_obj.para
para2_obj = Parameter.objects.filter(..not_important..)[0]
para2 = para2_obj.para
url_template = Template(url)
context = Context({'para1':para1, 'para2':para2})
our_url = url_template.render(context)
return render(request, 'userpage.html', {'url': our_url})
请注意,如果您有一个相当大的参数表,则最好使用以下命令动态构造字典:
para_dict = {
'para{}'.format(para.id): para.para
for para in Parameter.objects.all()
}