我正在尝试在模板中包含另一个位于同一文件夹中的文件.要做到这一点,我只是这样做{% import 'header.jinja2' %}.问题是我不断收到TemplateNotFound错误.
我的模板文件夹看起来像
+ myProject
|
+--+ templates
|
+--+ arby
| |-- header.jinja2
| |-- footer.jinja2
| +-- base.jinja2
|
+--+ bico
|-- header.jinja2
|-- footer.jinja2
+-- base.jinja2
Run Code Online (Sandbox Code Playgroud)
因此,当我渲染arby的'base.jinja2'时,我想包含'arby/header.jinja2',当我渲染bico的'base.jinja2'时,我想包含'bico/header.jinja2'.问题是我不想在{%include'arby/base.jinja2'%}中写'arby /'或'bico /'前缀.这可能吗?
谢谢
在我的Pyramid + SQLAlchemy网站上,我希望客户查看他已经放置的所有商品.Purchase有许多PurchaseOrder,PurchaseOrder有很多PurchaseOrderDetail.
我希望以优化的方式获取所有购买上下文(包括订单和详细信息),因此我正在研究SQLAlchemy加载策略.
我的模型声明如下所示:
class Purchase(Base):
__tablename__ = 'purchase'
__table_args__ = {'schema':'db','autoload':True}
customer = relationship(Customer)
billing_address = relationship(Address,primaryjoin="Address.AddressId==Purchase.BillingAddressId")
shipping_address = relationship(Address,primaryjoin="Address.AddressId==Purchase.ShippingAddressId")
orders = relationship(PurchaseOrder)
class PurchaseOrder(Base):
__tablename__ = 'purchase_order'
__table_args__ = {'schema':'db','autoload':True}
company = relationship(Company)
delivery_service = relationship(DeliveryService)
details = relationship(PurchaseOrderDetail)
class PurchaseOrderDetail(Base):
__tablename__ = 'purchase_order_detail'
__table_args__ = {'schema':'db','autoload':True}
product_variant = relationship(ProductVariant)
Run Code Online (Sandbox Code Playgroud)
我想要的是这种形式的东西:
db_session = DBSession()
p = db_session.query(Purchase).\
options(joinedload_all(Purchase.customer,
Purchase.billing_address,
Purchase.shipping_address)
,subqueryload_all(Purchase.orders,
Purchase.orders.details)).all()
Run Code Online (Sandbox Code Playgroud)
但是,Purchase.orders.details不允许该部件并引发以下异常:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File …Run Code Online (Sandbox Code Playgroud) 好的,我想通过ActionLink方法为我的网站添加一些安全性.如果用户有足够的权限访问操作/控制器,则ActionLink应呈现链接.如果没有,它应该返回一个空字符串.现在,ActionLink是一种静态方法,这使得它变得更加困难.有没有办法实现我想要做的事情?
我定义了一些从多个模板调用的宏.
例如,"产品"页面有一个"审阅"部分,该部分使用定义的宏'helpers/review.jinja2'来打印每个审阅.该'helpers/review.jinja2'文件有这两个宏:
{% macro render_review(request,review) -%}
{% macro render_review_comment(request,comment) -%}
Run Code Online (Sandbox Code Playgroud)
当有人通过ajax提交新评论时,我想返回呈现的评论,以便将内容附加到评论部分.
现在,我有一个中间模板'review/review.jinja2',如下所示:
{% import 'helpers/review.jinja2' as review_helper %}
{{ review_helper.render_review(request,review) }}
Run Code Online (Sandbox Code Playgroud)
此模板从视图中呈现:
@view_config(route_name='review.add_review', renderer='review/review.jinja2')
def add_review(request):
return dict(review=my_new_review)
Run Code Online (Sandbox Code Playgroud)
但我希望有更好的方法来做到这一点.那么,是否可以渲染模板中定义的宏?
谢谢
我想做一个pareses文本的应用程序.到目前为止,我有一个名为Result的类,它保存值并输入方程的每个部分.
public enum ResultType
{
Int32,
Double,
Boolean,
Color,
DateTime,
String,
Undefined,
Void
}
public class Result
{
public object Value { get; set; }
public ResultType Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
可能的结果可能是:
5 : Int32
true : Boolean
DADACC : Color
"Hello World!" : String
10.0 : Double
13/11/1986 : DateTime
Run Code Online (Sandbox Code Playgroud)
现在我想总结/除/// ...两个结果,但我真的不想做所有的工作.在C#中,您可以将它们混合在一起并获得答案.
var value = "Hello" + 2.0 + 4 + DateTime.Today; (value = "Hello2413/09/2011 12:00:00 a.m.")
Run Code Online (Sandbox Code Playgroud)
有一个简单的方法来处理这个?或者我必须自己弄清楚所有组合?我想的是:
var Operator = "+"; // or "-","*","/","^","%"
var sum …Run Code Online (Sandbox Code Playgroud) 我想从字符串中删除所有奇怪的字符,使其"url safe".因此,我有一个这样的功能:
def urlize(url, safe=u''):
intab = u"àáâãäåòóôõöøèéêëçìíîïùúûüÿñ" + safe
outtab = u"aaaaaaooooooeeeeciiiiuuuuyn" + safe
trantab = dict((ord(a), b) for a, b in zip(intab, outtab))
return url.lower().translate(trantab).strip()
Run Code Online (Sandbox Code Playgroud)
这很好用,但现在我想重用那个功能来允许特殊字符.例如,引号.
urlize(u'This is sóme randóm "text" that í wánt to process',u'"')
Run Code Online (Sandbox Code Playgroud)
...并抛出以下错误:
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: expected a character buffer object
Run Code Online (Sandbox Code Playgroud)
我试过了,但没有奏效:
urlize(u'text',u'\"')
intab = u"àáâãäåòóôõöøèéêëçìíîïùúûüÿñ%s" , safe
Run Code Online (Sandbox Code Playgroud)
--EDIT-- 完整的功能看起来像这样
def urlize(url, safe=u''):
intab = u"àáâãäåòóôõöøèéêëçìíîïùúûüÿñ" + safe
outtab = u"aaaaaaooooooeeeeciiiiuuuuyn" + safe
trantab = …Run Code Online (Sandbox Code Playgroud) 我即将开始一个新项目,我想这次django是要走的路.我一直在阅读过去两周的文档,看起来很有希望.
好吧,问题是我找不到任何关于(在C#MVC中调用)Partial Rendering.例如,如果我想要一个菜单项来自数据库的动态菜单,那么我希望基本模板(或母版页)在每个请求上呈现菜单(部分渲染器调用另一个操作或渲染模板会话数据).因此,只要我的模板继承自此基本模板,菜单就是免费的.
老实说,我不知道如何实现这一目标.
我想要的是基本模板中的一些代码,它使用子模板中未包含的数据.每次调用render_to_response('child_content.html',context)时,我都不想包含额外的变量(可能是'menu_list_items').这可能吗?
谢谢!
python ×4
jinja2 ×2
templates ×2
actionlink ×1
c# ×1
django ×1
include ×1
lazy-loading ×1
macros ×1
orm ×1
overriding ×1
pyramid ×1
render ×1
sqlalchemy ×1
string ×1
sum ×1
translate ×1
types ×1