Django网络应用程序中的奇怪行为

时间:2015-11-16 19:25:05

标签: javascript html django supervisor

我在Django应用程序中遇到了一个奇怪的错误,这个错误让我感到困惑。

基本上我的一个动态模板停止在登台服务器上呈现。一切都在本地工作正常,当推送到我的临时服务器时,一切似乎都很好,但是,点击几页后,然后使用此模板导航回其中一个页面,它突然消失了。如果我重新启动管理程序进程,模板会重新出现,但在导航到其他页面后会再次消失。

奇怪的是,当它消失时它并不一致。有时需要几次导航到其他页面才能消失。

模板本身具有动态生成的内容,但即使容器div也没有出现,所以这让我相信这不是上下文错误。

关于它的另一点是,如果我停止我的主管流程并运行./manage.py runserver,那么问题似乎不会发生。

我尝试过的事情:

  • 我使用django-template-repl加载网址并查看上下文 模板收到,我希望呈现的所有数据都显示在那里。

任何帮助将不胜感激,任何关于下一步的建议。

呈现的视图:

def list(request):
projects = Project.objects.active()

order = request.GET.get('order', 'popular')
projects = projects.ordered_by(order)

search_q = request.GET.get('search_q')
if search_q:
    project_query_terms = ['title', 'short_description', 'who_description']
    username_query_terms = [
            'user__userprofile__first_name',
            'user__userprofile__last_name']
    project_query = create_query(search_q, project_query_terms)
    username_query = create_query(search_q, username_query_terms) & Q(
                           name_is_visible__exact=True)
    projects = projects.filter(project_query | username_query)
if request.GET.get('sector'):
    projects = projects.filter(sector__id=request.GET['sector'])

if request.GET.get('location'):
    projects = projects.filter(
            location=request.GET['location'],
            location_public=True)

form = ProjectFilterForm
form = (form(request.GET, projects=projects)
        if request.GET else form(projects=projects))
paginator = Paginator(projects, 9)
page = request.GET.get('page')

try:
    projects = paginator.page(page)
except PageNotAnInteger:
    projects = paginator.page(1)
except EmptyPage:
    projects = paginator.page(paginator.num_pages)

amounts_by_project = Need.objects.amounts_by_project()
amounts_raised_by_project =        MoneyDonation.objects.amounts_raised_by_project()

context = {
    'body_id': 'project-list',
    'projects': projects,
    'form': form,
    'order': order,
    'amounts_by_project': amounts_by_project,
    'amounts_raised_by_project': amounts_raised_by_project,
}

template = "_projects-content" if request.is_ajax() else "projects"
template = "projects/" + template + ".html"

return render(request, template, context)

projects-projects.html模板

    {% extends 'projects/__base.html' %}
  {% load image_tags staticfiles projects %}

{% block content %}
  {% include 'projects/_projects-content.html' %}
{% endblock %}

{% block scripts %}
<script>
  FCC.drawDonuts('.col-project');
  jQuery(function updateWithFilters($){
    function queryWithParams() {
      var getParams = '';
      $('#project-filter-form select').each(function(i) {
        getParams += (i === 0) ? '?' : '&';
        getParams += this.name + '=' + $(this).children('option:selected')[0].value;
      });
      $.get({% url 'projects' %} + getParams, function(res){
        $("#projects-content").html(res);
        updateWithFilters($);
        FCC.drawDonuts('.col-project');
      });
    }
    $('#project-filter-form select').change(function(e){
      queryWithParams();
    });
    $('#reset-filters').click(function(e) {
      e.preventDefault();
      $('#project-filter-form select option:selected').each(function(){
        $(this).prop('selected', false);
        queryWithParams();
      });
    });
  });
</script>
{% endblock %}

_projects-content.html

<div id='projects-content'>
  {% include 'projects/_projects-filters.html' %}
  {% include 'projects/_projects-projects.html' %}
</div>

_projects-projects.html

<section class="section hp-projects">
  <div class="container">
    <div class="row">
      <div class="col-xs-12 sub-header">
        <sub-header>
          <h2>Browse all projects</h2>
        </sub-header>
      </div>
      {% if not projects %}
        <p>No projects match your search.</p>
      {% endif %}
      {% for project in projects %}
      <div class="col-xs-12 col-sm-6 col-md-4">
          {% include '_project-thumbnail.html' %}
      </div><!--col-->
      {% endfor %}
    </div><!--row-->
    <div class="row">
      <div class="col-xs-12">
        {% with projects as collection %}
          {% include 'pagination.html' %}
        {% endwith %}
      </div>
    </div>
  </div><!--container-->
</section>

_project-thumbnail.html

{% load total staticfiles projects %}
<div class="project-container">
  <header>
    <a href="{% url 'project_detail' project.id %}" class="project">
      <h5 class="project-title">{{ project.title }}</h5>
    </a>
  </header>
  <figure>
    <div class="img-wrap">
      <a href="{% url 'project_detail' project.id %}" class="project">
        <img class="img-responsive" src="{{ MEDIA_URL }}{{ project.profile_image }}" alt="project image" />
      </a>
    </div>
  <figcaption>{{ project.short_description }}</figcaption>
  </figure>

  <div class="row three-donuts">
    <div class="col-xs-6">
      {% include "projects/_project-donate-thumbnail.html" %}
    </div>
    <div class="col-xs-6">
      {% include "projects/_project-volunteer-thumbnail.html" %}
    </div>
  </div>
</div><!--box-container-->

_project-donate-thumbnail.html是导航到其他页面后未呈现的模板 这里是文件的内容,但正如我所说,一旦你在新服务器重新启动后离开这个页面,这里面没有任何内容呈现。 然而_project-volunteer-thumbnail保持完全正常。这只是捐赠的thumnail消失了。

_project-捐赠-thumbnail.html

<div id="project-{{ project.id }}-donate" class="col-project this-project-donate">
  <span class="percentage">
    {% if project.donate_aim %}
      {{ project.donate_percent }}% 
    {% endif %}
  </span>
</div>
<div class="equation">
 £{{ project.donate_status }}
<span class="desired-amount">/ £{{ project.donate_aim }}</span>
</div>
<div class="button-link-wrapper">
  {% if project.donate_aim %}
    <a href="{% url 'project_donate' project.id %}" class="button graph-button donate">donate</a>
  {% else %}
    <span class="button graph-button donate deactivated">donate</span>
  {% endif %}

</div>

再次提出下一步的建议是有帮助的

0 个答案:

没有答案