在Django模板页面上,我试图访问嵌套字典中的值。
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
@Entity
public class Courses
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
int course_id;
String course_name;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "User_x_course", joinColumns = {@JoinColumn(name = "course_id", referencedColumnName = "course_id")}, inverseJoinColumns = {@JoinColumn(name="user_Id", referencedColumnName = "userId")})
private List<Users> user;
public void setUser(List<Users> user) {
this.user = user;
}
public Courses() {
super();
}
public int getCourse_id() {
return course_id;
}
public void setCourse_id(int course_id) {
this.course_id = course_id;
}
public String getCourse_name() {
return course_name;
}
public void setCourse_name(String course_name) {
this.course_name = course_name;
}
public void addUser(Users usr)
{
if(user == null)
user = new ArrayList<Users>();
user.add(usr);
//usr.addCousre(this);
}
}
在页面的某处,我有这两个变量
books =
{
1: { 1: 'Alice', 2: 'Bob', 3: 'Marta' },
2: { 1: 'Alice', 3: 'Marta' },
3: { 1: 'Alice', 2: 'Bob' },
}
我要做的是打印项目info.id = 1
detail.id = 2
(如果存在)或换句话说books[1][2]
。我遇到麻烦了,因为我无法访问此嵌套变量。得到solved here。但是,提出的解决方案是使用点表示法访问嵌套的字典项。但是问题在于,使用变量时这似乎不起作用。使用该逻辑,我会做:
books[info.id][detail.id]
但这不会产生任何结果。使用变量访问字典中的项目时,应如何处理?请注意,实际项目可能存在或可能不存在,这就是为什么我在使用{{ books.info.id.detail.id }}
答案 0 :(得分:2)
您不能直接在模板中执行此操作。您需要使用custom template tag。这会起作用:
@register.simple_tag
def nested_get(dct, key1, key2):
return dct.get(key1, {}).get(key2)
现在您可以在模板中使用它:
{% load my_tags_library %}
{% nested_get books item.id detail.id %}