Django,首页始终显示在子页面上

时间:2020-07-01 09:45:32

标签: html django view django-views extends

我遇到了一个问题,即使转到/ register时home.html页面仍然显示。对可能导致问题的原因的任何帮助或猜测都将具有很大的意义!

下面是main / urls.py文件:

from django.conf.urls import url, include
from . import views

app_name = "main"

urlpatterns = [
    url("", views.homepage, name="homepage"),
    url("register/", views.register, name="register"),
]

主要应用的url.py文件:

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url('tinymce/',include('tinymce.urls')),
    url('', include('main.urls')),
]

main / views.py文件:

from django.shortcuts import render
from django.http import HttpResponse
from .models import ParkingSpot
from django.contrib.auth.forms import UserCreationForm

# Create your views here.

def homepage(request):
    return render(request = request, 
                  template_name = "main/home.html",
                  context= {"parkingspots": [i for i in ParkingSpot.objects.all() if i.parkingspace_id == 1]})



def register(request):
    form = UserCreationForm
    return render(request,
                  "main/register.html",
                  context={"form":form})

我的html文件如下。首先是头文件,所有其他页面都将扩展。

<head>

    {% load static  %}
    <link = href="{% static 'tiny/css/prism'%"} rel="stylesheet">

    <!-- Compiled and minified CSS -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">

    <!-- Compiled and minified JavaScript -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>

</head>

<body>
  <nav class="nav-extended">
    <div class="nav-wrapper">
      <a href="/" class="brand-logo">Steelseries Parking</a>
      <a href="/" data-target="mobile-demo" class="sidenav-trigger"><i class="material-icons">menu</i></a>
      <ul id="nav-mobile" class="right hide-on-med-and-down">
        <li><a href="/">Main</a></li>
        <li><a href="/register">Register</a></li>
        <li><a href="/login">Login</a></li>
      </ul>
    </div>
    <div class="nav-content">
      <ul class="tabs tabs-transparent">
        <li class="tab"><a href="/">Copenhagen</a></li>
        <li class="tab"><a class="active" href="/Chicago">Chicago</a></li>
        <li class="tab disabled"><a href="/Taiwan">Taiwan</a></li>
      </ul>
    </div>
  </nav>

  <ul class="sidenav" id="mobile-demo">
    <li><a href="/">Main</a></li>
    <li><a href="/register">Register</a></li>
    <li><a href="/login">Login</a></li>
  </ul>

    <div class="container">
      <br>
      {% block content %}
      {% endblock %}
    </div>

</body>


<script src="{% static 'tinymce/js/prism.js'%"}>

主页:

{% extends "main/header.html" %}


{% block content %}

  <body>


      <div class="row">
          {% for spot in parkingspots%}
                
              <div class="row">
                  <div class="col s2 m4">
                  <div class="card-panel teal">
                      <span class="white-text">
                      Parkingspot: {{spot}} in {{spot.parkingspace}}
                      </span>
                  </div>
                  </div>
              </div>

          {% endfor %}
      </div>


  </body>
{% endblock %}

“注册”页面:

{% extends "main/header.html" %}


{% block content %}

    <form method="POST">
        {% csrf_token %}
        {{ form }}
    </form>

    If you already have an account, <a href="/login">Login</a> instead.

{% endblock %}

1 个答案:

答案 0 :(得分:0)

我发现,这是因为main / urls.py下urlpatterns中的“” url确实捕获了所有url,因为所有位置都匹配。当将其更改为r“ ^ $”时,它解决了问题:)