我正在学习Django构建一个小网站,我发现我有许多模板,我列出了对象,每个模板都有一个链接。 我以为我可以制作一个自定义模板标签,比如
{% object_list some %}
some
是字典{'list': obj_list, 'link': link}
,其中obj_list
是我要打印的对象列表,而link
应该是指向该项目的某个网址结构。
模板(称为object_list.html)应该看起来像
{% for object in object_list %}
<li><a href="{% url myapp:object object.id %}">{{object.name}}</a></
{% endfor %}
现在,我的问题是我不知道该在网址中做什么。我希望它具有灵活性,以便&#39; myapp:object&#39;被参数&#39; link&#39;取代,例如,如果对象类型是User,那么我使用{%url myapp:user user.id%}
。
可以这样做吗?怎么样?
我以
的形式尝试了this solution{% for object in object_list %}
{% url 'link' as my_url %}
<li><a href="{% url my_url object.id %}">{{object.name}}</a></li>
{% endfor %}
将'myapp:myobject'
作为参数但不起作用。确切地说,在模板中
{% load property_extras %}
{% object_list property_dict %}
其中property_dict
是我的参数,templatetag/property_extras.py
是保存标记的文件,给出NoReverseMatch错误(如果我使用普通模板 - 没有自定义标记 - 它工作正常)。
有关详细信息,我的模板标记为
@register.inclusion_tag('properties/object_list.html')
def object_list(object_dict):
print(object_dict['list'])
print(object_dict['link'])
return {
'object_list': object_dict['list'],
'link': object_dict['link'],
}
答案 0 :(得分:4)
我相信你可以使用
public object VerifyUser(string userId, string password)
{
DBFunctions dbInfo = new DBFunctions();
bool status = false;
string verifyUserQry = "SELECT * FROM Employee WHERE UserName = '" + userId + "' AND Password = '" + password + "'";
DataTable dt = default(DataTable);
dt = dbInfo.OpenDTConnection(verifyUserQry);
if (dt.Rows.Count == 1)
{
status = true;
}
return status;
}
并完全删除public bool VerifyUser(string userId, string password)
{
DBFunctions dbInfo = new DBFunctions();
bool status = false;
string verifyUserQry = "SELECT * FROM Employee WHERE UserName = '" + userId + "' AND Password = '" + password + "'";
DataTable dt = default(DataTable);
dt = dbInfo.OpenDTConnection(verifyUserQry);
if (dt.Rows.Count == 1)
{
的使用情况。为您的模型定义方法{% for object in object_list %}
<li><a href="{{ object.get_absolute_url }}">{{object.name}}</a></li>
{% endfor %}
是根据documentation解决问题的推荐方法。
答案 1 :(得分:2)
使用{% url 'link' as my_url %}
不起作用,因为您使用的是文字字符串'link'
,并且您没有包含对象ID。你的意思是:
{% url link object.id as my_url %}
目前尚不清楚将结果保存到my_url
的原因,因为您未在任何地方使用my_url
。也许你想要下一行:
<a href="{{ my_url }}">{{object.name}}</a></li>
但是,我认为你真的不需要as my_url
。它默默地吞下你可能不想要的错误。这样做会更简单:
<a href="{% url link object.id as my_url %}">{{object.name}}</a></li>