AttributeError: module 'courses.views' has no attribute 'search'

AttributeError: module 'courses.views' has no attribute 'search'

我是 Django 初学者,正在根据 Youtube 教程在一个教育网站上工作。我的问题是我不知道我的错误在哪里。

原错误:

AttributeError: module 'courses.views' has no attribute 'search'

错误 2(当我在 urls.py 中用 views.search 注释行时出现)

In template C:\Users\Vusala\Desktop\smartedu_project\smartedu_original\templates\partials_base.html, error at line 0

Reverse for 'search' not found. 'search' is not a valid view function or pattern name.

下面是项目的一些代码。

urls.py

from django.urls import path
from . import views


urlpatterns = [
    path('', views.course_list, name="courses"),
    path('<slug:category_slug>/<int:course_id>', views.course_detail, name="course_detail"),
    path('categories/<slug:category_slug>', views.course_list, name="courses_by_category"),
    path('tags/<slug:tag_slug>', views.course_list, name="courses_by_tag"),
    #path('search/', views.search, name="search"),
]

views.py

from django.http import HttpResponse
from django.shortcuts import render
from . models import Course, Category, Tag

def course_list(request):
    courses = Course.objects.all().order_by('-date')
    categories = Category.objects.all()
    tags = Tag.objects.all()
    
    
    context= {
        'courses': courses,
        'categories': categories,
        'tags': tags
    }
    return render(request, 'courses.html', context)

def course_detail(request,category_slug, course_id):
    course = Course.objects.get(category__slug=category_slug, id=course_id)
   

    context = {
       
        'course' : course
    }

    return render(request, 'course.html', context)

_base.html

{% load static %}

<!DOCTYPE html>
<html lang="en">
    ...
    <title>SmartEDU - Education Responsive HTML5 Template</title>  
    <link rel="shortcut icon" href="{% static 'images/favicon.ico' %}" type="image/x-icon" />
    <link rel="apple-touch-icon" href="{% static 'images/apple-touch-icon.png' %}">
    <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
    <link rel="stylesheet" href="{% static 'style.css' %}">
    ...
</head>
<body class="host_version"> 

    <div id="preloader">
        <div class="loader-container">
            <div class="progress-br float shadow">
                <div class="progress__item"></div>
            </div>
        </div>
    </div>
    
    {% include 'partials/_navbar.html' %}

    {% block content %}
    {% endblock %}

    {% include 'partials/_footer.html' %}

_navbar.html

{% load static %} 
<header class="top-navbar">
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <div class="container-fluid">
            <a class="navbar-brand" href="{% url 'index' %}">
        <img src="{% static 'images/logo.png' %}" alt="" />
            </a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbars-host" aria-controls="navbars-rs-food" aria-expanded="false" aria-label="Toggle navigation">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbars-host">
                <ul class="navbar-nav ml-auto">
                    <li class="nav-item {% if '/' == request.path %} active {% endif %} "><a class="nav-link" href="{% url 'index' %}">Home</a></li>
                    <li class="nav-item"{% if 'about' in request.path %} active {% endif %} "><a class="nav-link" href="{% url 'about' %}">About Us</a></li>
                    <li class="nav-item"{% if 'courses' in request.path %} active {% endif %} "><a class="nav-link" href="{% url 'courses' %}">Courses</a></li>
                    <li class="nav-item"{% if 'teachers' in request.path %} active {% endif %} "><a class="nav-link" href="{% url 'teachers' %}">Teachers</a></li>
                    <li class="nav-item"><a class="nav-link" href="contact.html">Contact</a></li>
                </ul>
                <ul class="nav navbar-nav navbar-right">
                    <li><a class="hover-btn-new log orange" href="#" data-toggle="modal" data-target="#login"><span>Book Now</span></a></li>
                </ul>
            </div>
        </div>
    </nav>
</header>
<!-- End header -->

_footer.html

{% load static %}
<footer class="footer">
    <div class="container">
        <div class="row">
            <div class="col-lg-4 col-md-4 col-xs-12">
                <div class="widget clearfix">
                    <div class="widget-title">
                        <h3>About US</h3>
                    </div>
                    <p> Integer rutrum ligula eu dignissim laoreet. Pellentesque venenatis nibh sed tellus faucibus bibendum. Sed fermentum est vitae rhoncus molestie. Cum sociis natoque penatibus et magnis dis montes.</p>   
                    <div class="footer-right">
                        <ul class="footer-links-soi">
                            <li><a href="#"><i class="fa fa-facebook"></i></a></li>
                            <li><a href="#"><i class="fa fa-github"></i></a></li>
                            <li><a href="#"><i class="fa fa-twitter"></i></a></li>
                            <li><a href="#"><i class="fa fa-dribbble"></i></a></li>
                            <li><a href="#"><i class="fa fa-pinterest"></i></a></li>
                        </ul><!-- end links -->
                    </div>                      
                </div><!-- end clearfix -->
            </div><!-- end col -->

            <div class="col-lg-4 col-md-4 col-xs-12">
                <div class="widget clearfix">
                    <div class="widget-title">
                        <h3>Information Link</h3>
                    </div>
                    <ul class="footer-links">
                        <li><a href="#">Home</a></li>
                        <li><a href="#">Blog</a></li>
                        <li><a href="#">Pricing</a></li>
                        <li><a href="#">About</a></li>
                        <li><a href="#">Contact</a></li>
                    </ul><!-- end links -->
                </div><!-- end clearfix -->
            </div><!-- end col -->
            
            <div class="col-lg-4 col-md-4 col-xs-12">
                <div class="widget clearfix">
                    <div class="widget-title">
                        <h3>Contact Details</h3>
                    </div>

                    <ul class="footer-links">
                        <li><a href="mailto:#">info@yoursite.com</a></li>
                        <li><a href="#">www.yoursite.com</a></li>
                        <li>PO Box 16122 Collins Street West Victoria 8007 Australia</li>
                        <li>+61 3 8376 6284</li>
                    </ul><!-- end links -->
                </div><!-- end clearfix -->
            </div><!-- end col -->
            
        </div><!-- end row -->
    </div><!-- end container -->
</footer><!-- end footer -->

<div class="copyrights">
    <div class="container">
        <div class="footer-distributed">
            <div class="footer-center">                   
                <p class="footer-company-name">All Rights Reserved. &copy; 2018 <a href="#">SmartEDU</a> Design By : <a href="https://html.design/">html design</a></p>
            </div>
        </div>
    </div><!-- end container -->
</div><!-- end copyrights -->

<a href="#" id="scroll-to-top" class="dmtop global-radius"><i class="fa fa-angle-up"></i></a>

<!-- ALL JS FILES -->
<script src="{% static 'js/all.js' %}"></script>
<!-- ALL PLUGINS -->
<script src="{% static 'js/custom.js' %}"></script>
<script src="{% static 'js/timeline.min.js' %}"></script>
<script>
    timeline(document.querySelectorAll('.timeline'), {
        forceVerticalMode: 700,
        mode: 'horizontal',
        verticalStartPosition: 'left',
        visibleItems: 4
    });
</script>
<script>
    $(window).on('load', function() {
        $('#logreg').modal('show');
    });
</script>
</body>
</html>

courses.html

{% extends 'partials/_base.html' %}
{% load static %}

{% block content %}
    
    <div class="all-title-box">
        <div class="container text-center">
            <h1>Courses</span></h1>
        </div>
    </div>
    
    <div id="overviews" class="section wb">
        <div class="container">
            <div class="row"> 
                <div class="col-lg-9 blog-post-single">
                    
                    <div class="row"> 
                        {% for course in courses %}
                        <div class="col-lg-6 col-md-6 col-12 mb-4">
                            <div class="course-item">
                                <div class="image-blog">
                                    <img src="{{course.image.url}}" alt="" class="img-fluid">
                                </div>
                                <div class="course-br">
                                    <div class="course-title">
                                        <h2><a href="{% url  'course_detail' course.category.slug course.id %}" title="">{{course.name}}</a></h2>
                                    </div>
                                    <div class="course-desc">
                                        <p>{{course.description | truncatechars:140}}</p>
                                    </div>
                                </div>
                                <div class="course-meta-bot">
                                    <ul>
                                        <li><i class="fa fa-calendar" aria-hidden="true"></i> {{course.date|date:"d M Y"}}</li>
                                        <li><i class="fa fa-book" aria-hidden="true"></i> {{course.teacher}}</li>
                                    </ul>
                                </div>
                            </div>
                        </div><!-- end col -->
                        {% endfor %}
                    </div><!-- end row -->
                
                    
                </div><!-- end col -->
                <div class="col-lg-3 col-12 right-single">
                    <div class="widget-search">
                        <div class="site-search-area">
                            <form method="get" id="site-searchform" action="{% url 'search' %}">
                                <div>
                                    <input class="input-text form-control" name="search" placeholder="Search keywords..." type="text">
                                    <input id="searchsubmit" value="Search" type="submit">
                                </div>
                            </form>
                        </div>
                    </div>
                    <div class="widget-categories">
                        <h3 class="widget-title">Categories</h3>
                        <ul>
                            {% for category in categories %}
                                <li><a href="{% url 'courses_by_category' category.slug %}">{{category.name}}</a></li>
                            {% endfor %}
                        </ul>
                    </div>
                    <div class="widget-tags">
                        <h3 class="widget-title">Search Tags</h3>
                        <ul class="tags">
                            {% for tag in tags %}
                                <li><a href="{% url 'courses_by_tag' tag.slug %}">{% if tag.slug in request.path %} <b>{{tag.name}}</b>{% else %}{{tag.name}}{% endif %}</a></li>
                            {% endfor %}
                        </ul>
                    </div>
                </div>
            </div><!-- end row -->
        </div><!-- end container -->
    </div><!-- end section -->

    {% endblock %}

我希望你能帮助我,让我摆脱这种绝望。

错误很明显,它表示在您的视图中没有名为搜索的函数

请考虑添加代码和错误不是它们的 img ..


第二个错误发生在这里

<form method="get" id="site-searchform" action="{% url 'search' %}">
    <div>
    <input class="input-text form-control" name="search" placeholder="Search keywords..." type="text">
    <input id="searchsubmit" value="Search" type="submit">
   </div>
</form>
                   

在此表单中 course.html 表单操作设置为 {% url 'seaech '%} 只要删除这个表格,一切都会起作用