2017-09-26 67 views
0

嗨,大家好我想让我的HTML工作,但似乎我没有得到的东西。在HTML中渲染django标记无法正常工作

我的HTML如下:(链接到网址的网站:team_select)的一个项目链接

{% extends 'base.html' %} 
{% block body %} 
<div class="container"> 
    <div class="jumbotron"> 
    <h2>Welcome to your Project {{ project.name }} Detail page</h2> 
    </div> 

<!-- case 1 = if there is not team created or linked --> 
    {% if project.team_id == None %} 
    <div class="invite-team"> 
     <div class="jumbotron"> 
     <div class="jumbo-text"> 
      <h3>Your project has been created, It is time to link a team or create a new for your project</h3> 
     </div> 
      <div class="jumbo-button"> 
      <a href="{% url 'website:team_select'%}" class="btn btn-default" role="button"><span class="glyphicon glyphicon-link"></span> Link an existing team</a> 
      <a href="{% url 'website:add_team' %}" class="btn btn-success" role="button"><span class="glyphicon glyphicon-plus"></span> Create a new team</a> 
      </div> 
     </div> 

<!-- case 2 = if there is a team created but no team members --> 

{% elif project.team_id and project.team_id.members.count == 0 %} 
<div class="invite-teammembers"> 
    <div class="jumbotron"> 
    <div class="jumbo-text"> 
     <h3>The team {{ project.team_id }} has beed created, we now need to add TeamMembers</h3> 
    </div> 
     <div class="jumbo-button"> 
     <a href="{% url 'registration:team_register3' %}" class="btn btn-success" role="button"><span class="glyphicon glyphicon-plus"></span> Add Team Members</a> 
     </div> 
    </div> 
</div> 

<!-- any other situation --> 
    {% else %} 
    <h1>Youhouu</h1> 

    {% endif %} 
    </div> 
</div> 

{% endblock%} 

我的观点

def TeamSelect(request): 
    #import pdb; pdb.set_trace() 
    if request.method == "POST": 
     select_form = EditSelectTeam(request.user, request.POST) 
     if select_form.is_valid(): 
      data = select_form.cleaned_data['team_choice'] 
      obj2 = Project.objects.filter(project_hr_admin=request.user) 
      obj3 = obj2.latest('id') 
      if obj3.team_id == None: 
       obj3.team_id = data 
       obj3.save() 
       obj4 = obj3.team_id 
       obj5 = obj4.members.all() 

       for i in obj5: 
        current_site = get_current_site(request) 
        message = render_to_string('acc_join_email.html', { 
         'user': i.first_name, 
         'domain':current_site.domain, 
         }) 
        mail_subject = 'You have been invited to SoftScores.com please LogIn to get access to the app' 
        to_email = i.email 
        email = EmailMessage(mail_subject, message, to=[to_email]) 
        email.send() 
       messages.success(request, 'test') 
       return render(request,'project_details.html') 
      else: 
       print('this project has already a team') 
     else: 
      print('Non Valid form') 

    else: 
     select_form = EditSelectTeam(request.user) 
    return render(request,'link_project.html', 
          {'select_form':select_form }) 

我的HTML未呈现,就像它应该。我得到以下错误:

Could not parse the remainder: '()' from 'project.team_id.members.count()' 

的事情是使用shell project.team_id.members.count() == 0是真的 但project.team_id.members.count == 0False

我该如何让它工作?

+0

如果不是0,如果您执行'{{project.team_id.members.count}}',那么值是多少? – qbzenker

+0

我不确定你的问题..但值可以是任何正整数..它正在计算一个团队中团队成员的数量 – Ben2pop

+0

好吧 - 你可以尝试'{%if project.team_id.members | length == 0%}' - ['length'](https://docs.djangoproject.com/en/1.11/ref/templates/builtins/)过滤器应该负责统计'project.team_id.members中元素的数量'。 – qbzenker

回答

3

更改为:

{% if not project.team_id and project.team_id.members.count == 0 %} 

{% else %}而不是{% else project.team_id.members.count() > 0 %}(这是无效)。

请注意,在拨打count后缺少()

这就是您从HTML模板中调用count函数的方式。其实任何功能,不仅仅是这一个。请阅读behind the scenes,了解点(.)运算符在Django模板内的工作方式。

+0

基本上,您不需要视图中的函数调用的parens。 :) – MarkJL

+0

我尝试过,但没有处理{%else%}部分。你认为这是因为当一个团队被链接时,我会调用渲染函数以返回到详细信息页面? – Ben2pop

+0

你的意思是“else子句不起作用”?如果有'project.team_id' **和**'project.team_id.members.count'不是别的(因此大于零),则'else'子句将被执行。 –