0

私は Django を初めて使用し、Django を使用してブログを作成するのに役立つチュートリアルに従いました。そのプロジェクトはうまくいきました。しかし、そのチュートリアルで学んだことを使用して、自分の簡単な Web サイトを作成したいと思ったとき、物事は洋ナシの形になりました。私は長い間この問題に悩まされてきましたが、それは本当に私を悩ませているので、新鮮な目が問題を解読するのに役立つことを願っています.

私が得ているエラーはこれです:

Reverse for 'course_detail' with arguments '()' and keyword arguments '{u'cd': ''}' not found. 1 pattern(s) tried: ['course/(?P<cd>\\d+)/$']

元のプロジェクトでは、引数の「cd」の前に「u」がなかったことがわかりました。これがどこから来ているのかわかりません。これを引き起こしている原因を精力的に探しましたが、見つかりませんそれ。

この問題に関する残りのコードは次のとおりです。

course_list.html

   {% load staticfiles %}
    <html>
        <head>
            <title>Courses</title>
            <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
            <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
            <link rel="stylesheet" href="{% static 'css/website.css' %}">
            <link href="//fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext" rel="stylesheet" type="text/css">
            <link href="https://fonts.googleapis.com/css?family=Oswald" rel="stylesheet" type="text/css">
        </head>
        <body>
            <div class="links">
                <h1><a href="">Home</a> |
                <a href="">Courses</a> |
                <a href="">Venues</a> |
                <a href="">About Us</a> |
                <a href="">Contact Us</a></h1>
            </div>

            <div class="page-header">
                <h1><a href="">Courses</a></h1>
            </div>

            <div class="content container">
                <div class="row">
                    <div class="col-md-8">
                    {% for course in courses %}
                        <div class="course">
                            <h2><a href="{% url 'course_detail' cd=course.cd %}">{{ course.course_name }}</a></h2>
                            <p><b>Course code: </b> {{ course.course_code }}</p>
                            <p><b>Price: </b> {{ course.price }} </p>
                            <p><b>Course topic: </b> {{ course.topic_details }} </p>
                                <div class="date">
                                    <p><b>Start Date: </b> {{ course.start_date }}</p>
                                    <p><b>End Date: </b> {{ course.end_date }}</p>
                                </div>
                            <p><b>Availability: </b> {{ course.status }}</p>
                            <p><b>Course venue: </b> {{ course.venue }}</p>
                            <p><b>Room course will be held in: </b> {{ course.room }}</p>

                                <button class="button">Book Course</button>

                        </div>
                    {% endfor %}
                    </div>
                </div>
            </div>
            <div class="footer">
                <h3>Other Links</h3>
            </div>

        </body>

    </html>

course_detail.html

 {% extends 'website/base.html' %}
    {% block content %}
                        <div class="course">
                            <p><b>Course code: </b> {{ course.course_code }}</p>
                            <p><b>Price: </b> {{ course.price }} </p>
                            <p><b>Course topic: </b> {{ course.topic_details }} </p>
                                <div class="date">
                                    <p><b>Start Date: </b> {{ course.start_date }}</p>
                                    <p><b>End Date: </b> {{ course.end_date }}</p>
                                </div>
                            <p><b>Availability: </b> {{ course.status }}</p>
                            <p><b>Course venue: </b> {{ course.venue }}</p>
                            <p><b>Room course will be held in: </b> {{ course.room }}</p>

                                <button class="button">Book Course</button>

                        </div>

    {% endblock %}

ビュー.py

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

# Create your views here.
def course_list(request):
    courses = Course.objects.all()
    return render(request, 'website/course_list.html', {'courses': courses})

def course_detail(request, cd):
    course = get_object_or_404(Course, cd=cd)
    return render(request, 'website/course_detail.html', {'course': course})

urls.py

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

urlpatterns = [
    url(r'^$', views.course_list, name='course_list'),
    url(r'^course/(?P<cd>\d+)/$', views.course_detail, name='course_detail'),
]

完全なトレース

Request Method: GET
Request URL:    https://yr4-group-project-mfblack.c9users.io/
Django Version: 1.9
Exception Type: NoReverseMatch
Exception Value:    
Reverse for 'course_detail' with arguments '()' and keyword arguments '{u'cd': ''}' not found. 1 pattern(s) tried: ['course/(?P<cd>\\d+)/$']
Exception Location: /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in _reverse_with_prefix, line 508
Python Executable:  /usr/bin/python
Python Version: 2.7.6
Python Path:    
['/home/ubuntu/workspace',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PILcompat',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/pymodules/python2.7']
Server time:    Tue, 25 Oct 2016 16:08:46 +0000

機能させるために考えられるすべてのことを試したので、誰かが助けてくれることを願っています。さらにコードが必要な場合は、お知らせください。

更新: models.py

class Course(models.Model):
    MY_CHOICES = (
        ('Open', 'Open'),
        ('Closed', 'Closed'),
        ('Fully Booked', 'Fully Booked'),
    )
    course_name = models.CharField(max_length=40)
    course_code = models.CharField(max_length=40)
    price = models.CharField(max_length=40, default='add price')
    topic_details = models.TextField(max_length=200)
    start_date = models.DateField('start date')
    end_date = models.DateField('end date')
    status = models.CharField(max_length=20, choices=MY_CHOICES)
    venue = models.ForeignKey(Venue, on_delete=models.CASCADE)
    room = models.CharField(max_length=20)
    def __str__(self):
        return self.course_name

私はあなたの答えを試してみましたが、うまくいきました。ウェブサイトをロードしていますが、コース名をクリックすると、次のエラーが表示されます。

FieldError at /course/1/
Cannot resolve keyword 'cd' into field. Choices are: course_code, course_name, end_date, id, price, room, start_date, status, student, topic_details, venue, venue_id
Request Method: GET
Request URL:    https://yr4-group-project-mfblack.c9users.io/course/1/
Django Version: 1.9
Exception Type: FieldError
Exception Value:    
Cannot resolve keyword 'cd' into field. Choices are: course_code, course_name, end_date, id, price, room, start_date, status, student, topic_details, venue, venue_id
Exception Location: /usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py in names_to_path, line 1330
Python Executable:  /usr/bin/python
Python Version: 2.7.6
Python Path:    
['/home/ubuntu/workspace',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PILcompat',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/pymodules/python2.7']
Server time:    Tue, 25 Oct 2016 17:14:37 +0000
4

1 に答える 1

0

course_detailトレース ログは、キャプチャされたグループが空白の URL が見つからないことを示していますcd。(NB Theuは Unicode を参照しており、あなたの問題とは何の関係もありません。)

あなたのcourse_detailURL には 1 つ以上の数字が必要ですcd:

r'^course/(?P<cd>\d+)/$'

しかし、それは合格です...何もありません!

'course_detail' with arguments '()' and keyword arguments '{u'cd': ''}'

なんで?あなたの見解では{% url 'course_detail' cd=course.cd %}course.cdは空白だからです。

私はあなたのモデルを見る必要がありますが、あなたは標準の代わりにCourse単純に使用しているのではないかと疑っています。: に切り替えてみてください。これで問題が解決するはずです。cdidcourse.id

アップデート:

2 番目のエラーは、まったく同じ問題が原因で発生しますviews.py

get_object_or_404(Course, cd=cd)

cdここは未定義です: に変更する必要がありますid

于 2016-10-25T16:41:37.463 に答える