首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TemplateDoesNotExist位于/lab/

TemplateDoesNotExist位于/lab/
EN

Stack Overflow用户
提问于 2017-05-06 21:13:06
回答 1查看 308关注 0票数 0

在dashboar.html中,我扩展了base.html,它弹出一个错误,TemplateDoesNotExist at /lab/,如果我将{% TemplateDoesNotExist " base.html“%}去掉,它可以工作,假设我的base.html有问题。

这是我的目录

代码语言:javascript
复制
mysite/
  lab/
    templates/
      lab/
        base.html
        dashboard.html
        details/
          index.html
          login.html
    __init__.py
    # views.py; models.py etc.

base.html

代码语言:javascript
复制
<div id="header">
    <span class="logo">Bookmarks</span>
    {% if request.user.is_authenticated %} <ul class="menu">
        <li {% if section =="dashboard" %}class="selected"{% endif %}>
            <a href="{% url 'dashboard' %}">My dashboard</a>
        </li>
        <li {% if section =="images" %}class="selected"{% endif %}>
            <a href="#">Images</a>
        </li>
        <li {% if section =="people" %}class="selected"{% endif %}>
            <a href="#">People</a>
        </li> </ul> {% endif %}
    <span class="user">
{% if request.user.is_authenticated %}
    Hello {{ request.user.first_name }},
    <a href="{% url 'logout' %}">Logout</a>
    {% else %}
    <a href="{% url 'login' %}">Log-in</a>
    {% endif %}
    </span>
</div>

dashboard.html

代码语言:javascript
复制
{% extends "base.html" %}
{% block title %}Dashboard{% endblock %}
{% block content %}
    <h1>Dashboard</h1>
    <p>Welcome to your dashboard.</p>
{% endblock %}

views.py

代码语言:javascript
复制
from django.shortcuts import render
from django.http import HttpResponse
from django.contrib.auth import authenticate, login
from .forms import LoginForm
from django.contrib.auth.decorators import login_required
from .models import User, Device


def lab_list(request):
    return render(request, 'lab/details/index.html')


def user_login(request):

    if request.method == 'POST':

        form = LoginForm(request.POST)

        if form.is_valid():
            cd = form.cleaned_data
            user = authenticate(username=cd['username'],
                                password=cd['password'])
            if user is not None:
                if user.is_active:
                    login(request, user)
                    return HttpResponse('Authenticated '' Successfully')
                else:
                    return HttpResponse('Disabled account')
            else:
                return HttpResponse('Invalid login')
    else:
        form = LoginForm()

    return render(request, 'lab/details/login.html', {'form': form})


@login_required
def dashboard(request):
    return render(request, 'lab/dashboard.html', {'section': 'dashboard'})

注册/login.html

代码语言:javascript
复制
{% extends "lab/base.html" %}

{% block content %}
    <h1>Log-in</h1>
{% if form.errors %}
<p>
    your username and password didn't match.
    Please try again.
</p>
{% else %}
<p>Please, use the following from to log-in</p>
{% endif %}
<div class="login-form">
    <form action="{% url 'login' %}" method="post">
        {{ form.as_p }}
        {% csrf_token %}
        <input type="hidden" name="next" value="{{ next }}" />
        <p><input type="submit" value="Log-in"></p>
    </form>
</div>
{% endblock %}

注册/logged_out.html

代码语言:javascript
复制
{% extends "lab/base.html" %}
{% block title %}Logged out{% endblock %}
{% block content %}
<h1>Logged out</h1>
<p>You have been successfully logged out. You can <a href="{% url 'login' %}">log-in again</a>.</p>
{% endblock %}

模板/lab/Details.html

代码语言:javascript
复制
{% extends "lab/base.html" %}

{% block title %}
    Login
{% endblock %}

{% block content %}
    <h1>Log-in</h1>
    <form action="." method="post">
            {{ form.as_p }}
            {% csrf_token %}
            <input type="submit" value="登陆">
    </form>
{% endblock %}

urls.py

代码语言:javascript
复制
from django.conf.urls import url
from . import views
from django.contrib.auth.views import login, logout, logout_then_login

urlpatterns = [
    # post views
    url(r'^login/$', login, name='login'),
    url(r'^logout/$', logout, name='logout'),
    url(r'^logout-then-login/$', logout_then_login, name='logout_then_login'),
    url(r'^$', views.dashboard, name='dashboard'),
]

更新:

我已经在我的settings.py中添加了以下内容

代码语言:javascript
复制
LOGIN_REDIRECT_URL = reverse_lazy('dashboard') 
LOGIN_URL = reverse_lazy('login')
LOGOUT_URL = reverse_lazy('logout')
EN

回答 1

Stack Overflow用户

发布于 2017-05-06 21:56:31

解决方案:如下所示的扩展基本模板:{% extends 'lab/base.html' %}

说明:

如果您只编写{% extends 'base.html' %},Django将在lab/templates/中查找base.html。但是在这个目录中没有。

实际上,base.html位于lab/templates/lab/目录中。这就是为什么您需要指定包含base.html的应用程序目录的名称

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43820889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档