在 Django v1.4.3 下
为什么下面的 Django 模板案例 1 中的 if 语句总是显示块语句的内容,而与 if 语句是否为 TRUE 无关?
模板中的块语句是否总是在 if 语句之前执行?(也许我在文档中错过了这一点。)
View.py(请注意,为了测试目的故意“不”提供map_url):
def post_address(request):
return render_to_response(
'record/post_address.html',
{'form': form},
context_instance=RequestContext(request)
)
Run Code Online (Sandbox Code Playgroud)
base_integrated_form.html 父模板包含
{% block after_form %}
{% endblock after_form %}
Run Code Online (Sandbox Code Playgroud)
post_address.html(两种情况)Django模板案例1:(将块语句嵌套在if语句中将导致块语句的内容始终显示在浏览器中,与是否map_url提供或NOT无关。)
{% extends "base_integrated_form.html" %}
{% if map_url %}
{% block after_form %}
<div style="max-width:555px; height:240px; margin-left:auto; margin-right:auto;">
<iframe id="map" width="100%" height="100%" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="{{ map_url }}" style="border: 0px solid black"></iframe>
</div>
{% endblock after_form %}
{% endif …Run Code Online (Sandbox Code Playgroud) 我正在开发一个多语言博客,django 文档中的示例代码对我有用
<form action="/i18n/setlang/" method="post">
{% csrf_token %}
<select name="language">
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<option value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
Run Code Online (Sandbox Code Playgroud)
该表单让用户选择他们想要的语言。但我实际上想以链接的形式放置它,例如: [FR][EN][VI] 我如何在模板中实现它?
我有两个非常简单的模板,例如
索引.html:
<html>
<head>
</head>
<body>
{% block content %}hello{% endblock %}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
和详细信息.html
{% extends "index.html" %}
{% block content %}{{ super() }} world{% endblock %}
Run Code Online (Sandbox Code Playgroud)
但是当我使用details.html渲染视图时出现此错误
Could not parse the remainder: '()' from 'super()'
Run Code Online (Sandbox Code Playgroud)
我需要进口一些东西吗?
(在我使用 super() 函数之前,模板会正确呈现)
您好,有什么方法可以检查模板中自定义用户 nit 请求用户的权限。代码示例:
{% for agency_user in users %}
<tr>
<td>{{ agency_user.username }}</td>
<td>{{ agency_user.get_full_name }}</td>
<td>{{ agency_user.groups.all.first.name }}</td>
<td>{{ agency_user.min_price }}</td>
<td>{{ agency_user.max_price }}</td>
{% if agency_user|has_perm:'may_see_commerce_sell' %} #not working
<td>some action</td>
{% else %}
<td>some action</td>
{% endif %}
<td>
<a href="{% url 'user_edit' agency_user.id %}" class="edit icon"></a>
<a user-id="{{ agency_user.id }}" class="trash icon" title="some action"></a>
</td>
</tr>
{% empty %}
<td style="text-align: center" colspan="11">some action</td>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
或者我必须为每个用户权限编写自定义模型方法?
类似于在 Profile 模型中思考:
def sell_commerce(self):
if self.has_perm('may_see_commerce_sell'):
return …Run Code Online (Sandbox Code Playgroud) 嗨 Djangonauts,今天大家好吗,我是 Django 的新手,所以请原谅逻辑或代码中的任何愚蠢错误。我有一个用户、一个 User_Profile 和一个帖子模型。我想为用户发布的帖子数量提供用户徽章。例如,如果用户发布 3 个帖子,他/她将获得初学者徽章等等......
以下是我的用户个人资料models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_image = models.ImageField(default='', blank=True, null=True)
badge_image = models.ImageField(default='', blank=True, null=True)#maybe default can be "static/images/beginner_image.jpg" but it does not work
Run Code Online (Sandbox Code Playgroud)
帖子模型.py
User = get_user_model()
class Post(models.Model):
user = models.ForeignKey(User, related_name='posts')
title = models.CharField(max_length=250, unique=True)
slug = models.SlugField(allow_unicode=True, unique=True)
message = models.TextField()
Run Code Online (Sandbox Code Playgroud)
现在我想实现这样的目标:
user = User.objects.get(username=request.user.username)
if user.posts.count >= 3 :
badge_image = '<img src="some image">'# I don't know how to make a image variable in …Run Code Online (Sandbox Code Playgroud) class A(models.Model):
field1 = models.CharField(max_length=10)
field2 = models.IntegerField(default=0)
def __str__(self):
return self.field1 + str(self.field2)
class B(models.Model):
a = models.ForeignKey(A)
...
Run Code Online (Sandbox Code Playgroud)
现在在模板中,我想通过 using:{{ binstance.a }}呈现模型 B 实例的“a”属性:
但这似乎要么呈现空字符串,要么根本不呈现。
如何在模板中呈现外键的str方法?
如何在表格中排列表格?
我有一个正常的表格,我像这样在我的模板中安排它。
<table border="0" >
{% for field in form %}
<tr >
<td>
<label for="{{ field.label }}">{{ field.label_tag }}
{% if field.field.required %}<span style="color:red"; class="special_class">*</span>{% endif %}</label>
</td>
<td>
{{ field }}
</td>
</tr>
{% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)
现在我想使用脆皮形式。但不知道如何显示我的表单。
原因是它与此有关。
{% load crispy_forms_tags %}
{% crispy form %}
Run Code Online (Sandbox Code Playgroud)
但这并没有很好地安排我的田地,
如何通过循环访问这些字段?任何帮助将不胜感激。
我正在做一个项目,管理员可以将团队分配给经理。但它不起作用,我不知道它将如何工作。因为它引发了一个错误,指出“精确查找的 QuerySet 值必须限制为使用切片的一个结果。”
这是我的model.py
class manager(models.Model):
name = models.CharField(max_length= 500)
designation = models.CharField(max_length= 500)
user = models.ForeignKey(User,on_delete=models.CASCADE)
class Meta:
permissions = [
("edit_task", "can edit the task"),
]
Run Code Online (Sandbox Code Playgroud)
这是我的经理团队的 views.py 文件
@login_required (login_url= 'have the url where it will go')
@permission_required('have the permission that is assigned by me')
def supervisor(request):
return render(request, 'manager/index-3.html')
def supervisor_team(request):
print(request.user.email)
email=request.user.email
obj= Create_Team.objects.filter(status='Accept',
managers=manager.objects.filter(user__email=email))
return render(request, "manager/accept_team.html", {"object": obj})
Run Code Online (Sandbox Code Playgroud)
这是我的模板
<div class="body table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>S No.</th>
<th>COMPANY NAME</th>
<th>TEAM MEMBER</th> …Run Code Online (Sandbox Code Playgroud) 所以我遇到了这个奇怪的事情。我无法在模板中传递数据,除非它在 forloop 中。
例如..我几乎可以在 for 循环内打印一个变量,但在 forloop 之外的东西没有显示出来。
{{listings.make}} <<<< This isn't printing
{% for listing in listings %}
<p>{{listing.make}}</p> <<<< This is printing
{% endfor%}
Run Code Online (Sandbox Code Playgroud)
def search(request):
queryset_list = Vehicle.objects.all()
context = {
'listings': queryset_list
}
return render (request, 'mainapp/new_listing.html', context)
Run Code Online (Sandbox Code Playgroud)
class Vehicle(models.Model):
year = models.CharField(max_length=4, choices=YEAR)
make = models.CharField(max_length=50, default="")
model = models.CharField(max_length=50, default="")
version = models.CharField(max_length=50, default="")
description = models.TextField(max_length=50, default="")
def __str__(self):
return self.make
Run Code Online (Sandbox Code Playgroud)
知道实际发生了什么。如您所见,我使用的是基于函数的视图。
谢谢
我在 view.py 文件中有这个函数,我在它上面传递一个 ID 并渲染某个页面
def more_about_child(request,pk):
child = get_object_or_404(Child_detail,pk=pk)
academic = Academic.objects.filter(Student_name=child)
context={
'child':child,
'academic':academic,
}
return render(request,'functionality/more/more.html',context)
Run Code Online (Sandbox Code Playgroud)
而这个 urls.py 文件属于上面的 views.py 文件
from . import views
from django.urls import path
urlpatterns=[
#more_about_child
path('more/<int:pk>/',views.more_about_child,name='more'),
]
Run Code Online (Sandbox Code Playgroud)
然后我有这个功能,我想重定向到包含上述 urls.py 文件中的 id 的页面
def add_academy(request,pk):
child = get_object_or_404(Child_detail, pk=pk)
academic = Academic.objects.get(Student_name=child)
form = AcademicForm(request.POST, instance=academic)
if form.is_valid():
form.save()
return redirect('more') #it fails to redirect to this url,because it contain an ID in it
else:
form=AcademicForm()
context = {
'academic':academic,
'child':child,
'form':form, …Run Code Online (Sandbox Code Playgroud)