django配置文件将变量传递到模板



Django新手在工作,我可以使用一些指针。我正在使用django配置文件,并一直在处理我的配置文件页面,该页面由views.profile_detail处理。我面临的问题是,我无法使用此视图在模板中放入另一个变量。这是我的视图功能:

def profile_detail(request, username, public_profile_field=None,
               template_name='profiles/profile_detail.html',
               extra_context=None):
"""
Detail view of a user's profile.
If no profile model has been specified in the
``AUTH_PROFILE_MODULE`` setting,
``django.contrib.auth.models.SiteProfileNotAvailable`` will be
raised.
If the user has not yet created a profile, ``Http404`` will be
raised.
**Required arguments:**
``username``
    The username of the user whose profile is being displayed.
**Optional arguments:**
``extra_context``
    A dictionary of variables to add to the template context. Any
    callable object in this dictionary will be called to produce
    the end result which appears in the context.
``public_profile_field``
    The name of a ``BooleanField`` on the profile model; if the
    value of that field on the user's profile is ``False``, the
    ``profile`` variable in the template will be ``None``. Use
    this feature to allow users to mark their profiles as not
    being publicly viewable.
    If this argument is not specified, it will be assumed that all
    users' profiles are publicly viewable.
``template_name``
    The name of the template to use for displaying the profile. If
    not specified, this will default to
    :template:`profiles/profile_detail.html`.
**Context:**
``profile``
    The user's profile, or ``None`` if the user's profile is not
    publicly viewable (see the description of
    ``public_profile_field`` above).
**Template:**
``template_name`` keyword argument or
:template:`profiles/profile_detail.html`.
"""
user = get_object_or_404(User, username=username)
# accuracy = ''
try:
    profile_obj = user.get_profile()
    accuracy = str(profile_obj.number_of_answers / profile_obj.number_of_answers) + '%'
except ObjectDoesNotExist:
    raise Http404
if public_profile_field is not None and 
   not getattr(profile_obj, public_profile_field):
    profile_obj = None
if extra_context is None:
    # extra_context = {'accuracy': potato}
    extra_context = {}
context = RequestContext(request)
# context['accuracy'] = 'potato'
for key, value in extra_context.items():
    context[key] = callable(value) and value() or value
return render_to_response(template_name,
                          {'profile': profile_obj},
                          # { 'profile': profile_obj, 'accuracy': accuracy},
                          # locals(),
                          context_instance=context)

这是我的模板:

{% extends "base.html" %}
{% load i18n %}
{% block content %}
<p><strong>Level:</strong><br>{{ profile.level }}</p>
<p><strong>Bounty Points:</strong><br>{{ profile.total_bounty_points }}</p>
<p><strong>Number of questions:</strong><br>{{ profile.number_of_questions_asked }}</p>
<p><strong>Number of replies:</strong><br>{{ profile.number_of_replies }}</p>
<p><strong>Number of answers:</strong><br>{{ profile.number_of_answers }}</p>
<p><strong>Accuracy:</strong><br>{{ accuracy }}</p>
<p><strong>Number of times reported:</strong><br>{{ profile.reported_by_others }}</p>
{% endblock %}

我可以知道价值档案是从哪里传来的吗?它是来自字典{‘profile’:profile_obj}还是来自上下文?我试着把两者都注释掉,但模板仍然表现得很好。

我还尝试在模板中创建一个名为准确性的新变量,但我无法将其渲染,模板只是默默地失败了。然后,我将TEMPLATE_STRING_IF_INVALID="%s"添加到我的设置文件中,这样我就可以看到没有找到精度变量。我能知道我做错了什么吗?

如有任何建议,我们将不胜感激!感谢:)

Argh我发现问题了!我更改了错误的文件>_<因为我的python安装已写入默认目录。

最新更新