我想显示评分最高的 5 位用户。然而,它们目前没有显示有序,当我向用户添加两个评级时,它会出现两次,而不是计算平均值并放在正确的位置。
这些是模型:
# this is model for user
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile')
profilepic = models.ImageField(blank=True)
city = models.ForeignKey(City)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
# Uncomment if you don't want the slug to change every time the name changes
self.slug = slugify(self.user.username)
super(UserProfile, self).save(*args, **kwargs)
def __unicode__(self):
return self.user.username
# this is the model for user ratings - one to many relationship with User
class UserRating(models.Model):
user = models.ForeignKey(User)
comment = models.CharField(max_length=500)
rating = models.IntegerField(default=5) …Run Code Online (Sandbox Code Playgroud) 我有两个基本模板:base.html 和 base_visitor.html。如果用户经过身份验证,我希望扩展base.html;如果用户未经身份验证,我希望扩展base_vistior.html。我已经尝试过这个:
{% if user.is_authenticated %}
{% extends 'base.html' %}
{% else %}
{% extends 'base_visitor.html' %}
{% endif %}
{% block title %}{{ title }}{% endblock %}
{% block body %}
<h1>Title</h1>
{% if models %}
{% for model in models %}
<h2>{{ model.model_number }}<h2>
{% endfor %}
{% else %}
<h3>NO models</h3>
{% endif %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这给了我一个错误:“第 3 行的块标记无效:'else'。您是否忘记注册或加载此标记?”
感谢帮助!
现在,在我的 Django 模板中,a如果条件通过或失败,我正在编写一个全新的标记。有没有一种方法可以在a标签中写入这个条件,以便标签中只有一个?
{% for app in apps %}
{% if app.app_id == "app-smart" %}
<a href='{{app.url}}' class='portfolio-link'>
{% else %}
<a href='{% url app.url %}' class='portfolio-link'>
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud) 我正在向我的应用程序添加表单来修改我的大厅(我的自定义模型)。
在urls.py中,这是我的 urlpattern:
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^lobbys/$', views.LobbyListView.as_view(), name='lobbys'),
url(r'^lobby/(?P<pk>[\w-]+)/$', views.LobbyDetailView.as_view(), name='lobby-detail'),
url(r'^lobby/create/$', views.LobbyCreate.as_view(), name='lobby_create'),
url(r'^lobby/(?P<pk>\d+)/update/$', views.LobbyUpdate.as_view(), name='lobby_update'),
url(r'^lobby/(?P<pk>\d+)/delete/$', views.LobbyDelete.as_view(), name='lobby_delete'),
]
Run Code Online (Sandbox Code Playgroud)
问题如下:
第三个 URL 应该链接到以 UUID 字段作为主键标识的单个大厅模板。如果没有最后三行,一切都正常,但是当我添加表单的三个网址时,我收到错误
异常值:[“‘create’不是有效的 UUID。”]
我了解 urls.py 将“create”作为主键,而不是将其视为其他视图的 url。
我怎样才能绕过这个问题?非常感谢。
我有以下数组,想在模板中显示日期名称。
DAYS = ((0, "Saturday"),
(1, "Sunday"),
(2, "Monday"),
(3, "Tuesday"),
(4, "Wednesday"))
Run Code Online (Sandbox Code Playgroud)
我可以通过使用显示星期一{{ DAYS.2.1 }},但无法使用显示{{DAYS.class_weekday.key_value.1}}。
我正在class_weekday.key_value从 for 循环中获取,但是当我class_weekday.key_value在那里使用时,它没有显示任何内容!
谢谢你!
python django django-templates python-3.x django-rest-framework
我正在尝试迭代 django 模板中的字典并将值保存到window.obj,但它不起作用。
视图.py:
def myView(req):
...
myDict = {'foo':"[1,2]", 'bar':"[3,4]"}
return render(req, 'myPage.html', {'myDict':myDict})
Run Code Online (Sandbox Code Playgroud)
myPage.html:
<script type="text/javascript">
window.obj = {}
window.obj["foo"] = "{{ myDict.foo }}";
{% for key, value in myDict %}
window.obj["{{ key }}"] = "{{ value }}";
{% endfor %}
</script>
...
<script>
console.log(window.obj.foo); //prints {foo: "[1,2]"}
console.log(window.obj.bar); //prints undefined
</script>
Run Code Online (Sandbox Code Playgroud)
注意:我不能myDict.foo在我的实际项目中使用
我在这里缺少什么?
我在 django 中使用模板时遇到问题。我相信我的模板位于正确的位置,并且在查看错误日志中的路径后,该文件就在那里。我也让它在不使用的情况下工作render()。但我已经尝试了多种方法,并且在错误日志中它显示了一个路径,我可以按照该路径到达我尝试渲染的 html 文件。
这是我的项目的文件结构(注意:该文件结构实际上位于 C:\my_website 内部)
相关代码:
下面是我创建的 hello 应用程序的视图。目前的情况是有错误,但如果我注释掉调用并使用未注释的代码,它会显示index.html
C:\my_website\my_website\hello\viewsrender()的内容
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
import os
import logging #MS ADDED
logger = logging.getLogger(__name__)#MS ADDED
def index(request):
#!!! It works with this stuff uncommented
#index_path = os.path.join(os.path.dirname(os.path.dirname(__file__)),'hello\\templates\\hello\\index.html')
#logger.error('Views - index_path is ' + index_path) # MS ADDED
#with open(index_path) as f:
# html_string = f.read()
#return HttpResponse(html_string)
return render(request, 'hello/index.hmtl')
Run Code Online (Sandbox Code Playgroud)
以下是我在设置中更改的所有内容。我在 Django 文档中读到,如果您没有指定路径,它将在您创建的应用程序的模板目录中查找(你好)。但是在 TEMPLATES 中将 …
我正在 Django 网站上使用 Google ReCaptcha,并且想检查错误消息的值。如果该值为“无效的 reCAPTCHA”。请再试一次。' 然后我想在 ReCaptcha 下显示一条错误消息。但是,我设置的方式目前不起作用。
<div id="g-recaptcha-error">
{% if messages %}
{% for message in messages %}
{% if message is 'Invalid reCAPTCHA. Please try again.' %}
<span style="color:red;">{{ message }}</span>
{% endif %}
{% endfor %}
{% endif %}
</div>
Run Code Online (Sandbox Code Playgroud)
如何查看验证码消息的实际值?可能存在其他错误,因此如果值不同,我不希望显示此错误。
当我在下面添加此内容时,它显示“无效的 reCAPTCHA”。请再试一次。测试' 所以我知道该消息是正确的。
{% for message in messages %}
<p>{{ message }} test</p>
{% endfor %}
Run Code Online (Sandbox Code Playgroud) 我创建了一个搜索功能。但是,它会搜索包含输入值的所有元素。例如,有以下元素:44564、76436、445。当我输入“445”时,它显示“44564”和“445”,但我只需要445。或者如果我输入“64”,那么什么都不应该显示,但显示“44564”和“76436”。如何修复它?
案例列表.html
<div>
<h3>Search</h3>
<form method="GET" action="{% url 'case_search' %}">
<input type="search" type="text" name="q" prequired placeholder="Put value">
<button type="submit">Find</button>
</form>
</div>
<div>
{% for case in object_list %}
<div>
<p>{{ case.name }}</p>
</div>
{% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)
视图.py
class CaseView(ListView):
model = Case
template_name = 'case_list.html'
class CaseSearch(ListView):
template_name = 'case_list.html'
def get_queryset(self):
return Case.objects.filter(name__icontains=self.request.GET.get("q"))
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context["q"] = self.request.GET.get("q")
return context
Run Code Online (Sandbox Code Playgroud)
网址.py
path('case_list/', CaseView.as_view(), name='case_list'),
path('case_list/search/', CaseSearch.as_view(), name="case_search"),
Run Code Online (Sandbox Code Playgroud) django django-templates django-models django-forms django-views
几个月前我学会了如何在Django中对用户进行身份验证,但是我已经升级并遇到了一些问题,所以我今天早上发现我可能从一开始就没有这么做,所以我决定问一下.
在我的项目的urls.py文件中,我有^ accounts/login/$和^ accounts/logout/$都连接到内置的login()和logout()视图(在django.contrib.auth.views)和^ accounts/profile/$连接到我写的视图,名为"start_here",其内容基本上是这样的:
def start_here(request):
if request.user:
user_obj = request.user
else:
user_obj = None
is_auth = False
if request.user.is_authenticated():
is_auth = True
return render_to_response("profile.html", {'auth': is_auth,'user': user_obj,})
Run Code Online (Sandbox Code Playgroud)
现在,"profile.html"扩展了一个名为master.html的主模板,里面是一个"navbar"块,如果'auth'== True(下面的代码段),其内容应该会改变
{% block navbar %}
{% if auth %}
<a href="">Link A</a>
<a href="">Link B</a>
<a href="">Link C</a>
<a href="">Link D</a>
<a href="">Link E</a>
<a href="">Link F</a>
<a href="/accounts/logout/">Logout</a>
{% else %}
<a href="/accounts/login/">Login</a>
{% endif %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我登录并重定向到/ accounts/profile时,导航栏不会显示Links AF + Logout,它只显示"login".除非我手动将上面的块复制粘贴到profile.html中,否则它不会按照我的预期方式工作.调用render_to_response()时,我提供的上下文是否会传递给父模板以及子模板?
master和profile.html的完整源代码:http://dpaste.com/hold/128784/ 我在代码中看不到任何可疑内容.
django ×10
django-templates ×10
python ×5
django-views ×3
django-forms ×2
python-3.x ×2
django-urls ×1
javascript ×1