Как мне исправить ошибку ‘… не является зарегистрированным пространством имен’ Django 2.1

#python #django

#python #django

Вопрос:

итак, я создаю простую платформу mooc с использованием Django 2.1, и у меня возникла проблема.

Здесь вы можете найти весь мой проект, но я опишу всю ситуацию выше, и здесь вы можете найти весь экран печати ошибки django.

Итак, у меня есть этот проект под названием TamerMooc, в этом проекте есть 2 приложения. Основное приложение и приложение для курсов.

Это /courses/views.py файл:

 from django.shortcuts import render, get_object_or_404
from .models import Course

def index(request):
    courses = Course.objects.all()
    template_name = 'courses/index.html'
    context = {
        'courses':courses
    }
    return render(request, template_name, context)


def details(request, slug):

    course = get_object_or_404(Course, slug=slug)
    template_name = 'courses/details.html'
    context = {
        'course': course
    }
    return render(request, template_name, context)

  

И это /courses/urls.py файл:

 
from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('',views.index ,name='index'),
    path('<slug:slug>', views.details , name='details'),
]
  

И, по крайней мере, /core/templates/base.html файл, указанный в файле ошибки.

 <!doctype html>
{% load static %}
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Simple MOOC - Uma simples plataforma de ensino a distância" />
    <title>Tâmer MOOC</title>
    <link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.3.0/pure-min.css">
    <link rel="stylesheet" href="{% static 'css/styles.css' %}" />
</head>
<body>

    <div class="header">
        <div class="pure-menu pure-menu-open pure-menu-fixed pure-menu-horizontal">
            <a class="pure-menu-heading" href="{% url 'home' %}">TÂMER MOOC</a>
            <ul>
                <li class="pure-menu-selected"><a href="{% url 'home' %}">Início</a></li>
                <li><a href="{% url 'index' %}">Cursos</a></li>
                <li><a href="{% url 'contact' %}"}>Contato</a></li>
            </ul>
        </div>
    </div>
    <div class = "content">
        {% block content %}{% endblock %}

        <div class="footer">
            Tâmer MOOC - Uma simples plataforma de ensino a distância
        </div>

    </div>
<script src="http://yui.yahooapis.com/3.12.0/build/yui/yui-min.js"></script>
</body>
</html>

  

Я действительно прочитал много вопросов здесь, в stackoverflow, о подобных ошибках, но не могу найти решение.

Ответ №1:

Я думаю, что проблема здесь.

  <a href=" {{ course.get_absolute_url }}  "> <!--- {% url 'courses:details' course.slug %}--->
                                             ^^^^^                                        ^^^^
  

В шаблоне django комментарии таким образом не работают. Если вы хотите что-то закомментировать, сделайте это следующим образом:

 {% comment %}
    {% url 'courses:details' course.slug %}
{% endcomment %}
  

Или

 {# url 'courses:details' course.slug #}
  

Соответствующую документацию можно найти здесь.

Комментарии:

1. Хорошо, это работает, но после этого я удаляю комментарии функции get_absolute_url (я думал, что проблема была здесь, поэтому я комментирую только для проверки), которые вы находите здесь , и проблема возвращается, вы можете увидеть ошибку здесь . Итак, в резюме я просто удаляю комментарий, который вы указываете, и «добавляю» функцию `get_absolute_url`. Спасибо за ответ, я многому учусь!

2. В этом случае вам нужно добавить namespace в свой urls.py. Пример можно найти здесь: docs.djangoproject.com/en/2.1/intro/tutorial03/… . Но если вы это сделаете, то обновите URL-адреса в шаблоне, например {% url 'index' %} --> {% url 'courses:index' %}