小编Mar*_*ann的帖子

如何在Jinja2中包含具有相对路径的模板

我正在尝试在模板中包含另一个位于同一文件夹中的文件.要做到这一点,我只是这样做{% 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 /'前缀.这可能吗?

谢谢

python templates render include jinja2

13
推荐指数
1
解决办法
8831
查看次数

如何在SQLAlchemy中加载嵌套关系?

在我的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)

python orm sqlalchemy lazy-loading

6
推荐指数
2
解决办法
5610
查看次数

如何覆盖ActionLink行为

好的,我想通过ActionLink方法为我的网站添加一些安全性.如果用户有足够的权限访问操作/控制器,则ActionLink应呈现链接.如果没有,它应该返回一个空字符串.现在,ActionLink是一种静态方法,这使得它变得更加困难.有没有办法实现我想要做的事情?

overriding actionlink asp.net-mvc-2

5
推荐指数
1
解决办法
3136
查看次数

如何从可调用的视图渲染Jinja2宏?

我定义了一些从多个模板调用的宏.

例如,"产品"页面有一个"审阅"部分,该部分使用定义的宏'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)

但我希望有更好的方法来做到这一点.那么,是否可以渲染模板中定义的宏?

谢谢

python macros templates jinja2 pyramid

5
推荐指数
1
解决办法
1942
查看次数

如何将两个对象相加?

我想做一个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)

c# types sum operator-keyword

2
推荐指数
1
解决办法
4638
查看次数

Python:如何使用string.translate()来替换引号?(用于"slug"创作)

我想从字符串中删除所有奇怪的字符,使其"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)

python string translate

2
推荐指数
1
解决办法
1661
查看次数

如何使用django在基本模板中制作动态菜单

我即将开始一个新项目,我想这次django是要走的路.我一直在阅读过去两周的文档,看起来很有希望.

好吧,问题是我找不到任何关于(在C#MVC中调用)Partial Rendering.例如,如果我想要一个菜单​​项来自数据库的动态菜单,那么我希望基本模板(或母版页)在每个请求上呈现菜单(部分渲染器调用另一个操作或渲染模板会话数据).因此,只要我的模板继承自此基本模板,菜单就是免费的.

老实说,我不知道如何实现这一目标.


我想要的是基本模板中的一些代码,它使用子模板中未包含的数据.每次调用render_to_response('child_content.html',context)时,我都不想包含额外的变量(可能是'menu_list_items').这可能吗?

谢谢!

django renderpartial django-templates

0
推荐指数
1
解决办法
2350
查看次数