2017-06-14 9 views
0

私のコードが正常に動作するかどうかを確認するためにサーバを起動してデータベースにアクセスしようとすると、エラーが発生するのはなぜですか? Terminalの私のプロジェクトフォルダの中で、サーバーを実行しようとするとsudo python manage.py runserverを実行しましたが、前述のエラーのために動作しません。私はSOの周りを見てきましたが、私の問題に直接関連するものは見つかりませんでした。サーバーが起動しないのはなぜですか?

私はif()の声明が問題であると推測しています。

私は取得していますエラーは言う:

RuntimeError: maximum recursion depth exceeded while calling a Python object 

ここに私のviews.pyファイルです:

from .models import Album 
from django.shortcuts import render, redirect 
from django.contrib.auth import authenticate, login 
from django.core.urlresolvers import reverse_lazy 
from django.views import generic 
from django.views.generic import View 
from django.views.generic.edit import CreateView, UpdateView, DeleteView 
from .forms import UserForm 

class IndexView(generic.ListView): 
    template_name = 'music/index.html' 
    context_object_name = 'all_albums' 

    def get_queryset(self): 
     return Album.objects.all() 

class DetailView(generic.DeleteView): 
    model = Album 
    template_name = 'music/detail.html' 

class AlbumCreate(CreateView): 
    model = Album 
    fields = ['artist', 'album_title', 'genre', 'album_logo'] 

class AlbumUpdate(UpdateView): 
    model = Album 
    fields = ['artist', 'album_title', 'genre', 'album_logo'] 

class AlbumDelete(DeleteView): 
    model = Album 
    success_url = reverse_lazy('music:index') 

class UserFormView(View): 
    form_class = UserForm 
    template_name = 'music/registration_form.html' 

    # display blank form 
    def get(self, request): 
     form = self.form_class(None) 
     return render(request, self.template_name, {'form': form}) 

    def post(self): 
     form = self.form_class(request.POST) 

     if form.is_valid(): 
      user = form.save(commit=False) 

      #cleaned normalized data 

      username = form.cleaned_data['username'] 
      password = form.cleaned_data['password'] 

      user.set_password(password) 
      user.save() 

ここerrorです:

File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/urls/resolvers.py", line 255, in check 
    warnings.extend(check_resolver(pattern)) 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/core/checks/urls.py", line 26, in check_resolver 
    return check_method() 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/urls/resolvers.py", line 172, in check 
    warnings = self._check_pattern_startswith_slash() 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/urls/resolvers.py", line 140, in _check_pattern_startswith_slash 
    regex_pattern = self.regex.pattern 

ここに私のforms.pyファイルです:

は、
from django.contrib.auth.models import User 
from django import forms 

class UserForm(forms.ModelForm): # UserForm inherits from forms. 
    passwords = forms.CharField(widget=forms.PasswordInput) 

    class Meta: # Information about your class. 
     model = User # whenevr a creates sign up to your site it's gonna go in same table 
     fields = ['username', 'email', 'password'] 

はここに私のurls.pyファイルの:

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

app_name = 'music' 

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

if settings.DEBUG: 
    urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT) 
    urlpatterns += static(settings.STATIC_URL, document_root=settings.MEDIA_ROOT) 

はここに私のalbum_form.htmlファイルの:

{% extends 'music/base.html' %} 
{% block title %}Add a New Album{% endblock %} 
{% block album_active %}active{% endblock %} 

{% block body %} 
<div class="container-fluid"> 
    <div class="row"> 
     <div class="col-sm-12 col-md-7"> 
      <div class="panel panel-default"> 
       <div class="panel-body"> 
        <form class="horizontal" action="" method="post" enctype="multipart/form-data"> 
         {% csrf_token %} 
         {% include 'music/form-template.html' %} 
         <div class="form-group"> 
          <div class="col-sum-offset-2 col-sm-10"> 
           <button type="submit" class="btn btn-success">Submit</button> 
          </div> 
         </div> 
        </form> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
{% endblock %} 

ここでは私のindex.htmlファイルです:

{# loads path to static file #} 

{% extends 'music/base.html' %} 

{% block body %} 

    <ul> 
     {% for album in all_albums %} 
      <li><a href="{% url 'music:detail' album.pk %}">{{ album.album_title }}</a></li> 
     {% endfor %} 
    </ul> 

{% endblock %} 
+0

@maSTAShuFu CTEとは何ですか? – bojack

+0

@maSTAShuFu私は誤ってタグを付けました。それについての謝罪。 – bojack

答えて

2

私はあなたからの再帰的な参照を持っている疑いがありますmusic.urlsにurls.pyの罪を含めるdjangoがスローするエラーはURLリゾルバに固有です。

ifステートメントにエラーはありません。 'music:index'は名前空間の名前を指し、urls.pyにはまだ名前付きURLの文が必要です。単純なプロジェクトではアプリケーションが1つしかないので、名前空間は冗長です。したがって、ほとんどの場合、以下に示すように、代わりに 'インデックス'を使用する必要があります。

あなたのurls.pyには、music.urlsへのインクルードがあり、それ自体が再帰的に参照されているようです。 'music.urls'は音楽ディレクトリのurls.pyファイルを指します。 'music.urls'の有効なpythonオブジェクトがない場合、あなたのinclude文は間違っています。

私のプロジェクトではinclude URLを使用しないので、views.pyで定義された各ビューについてのステートメントが必要です。サーバーが正しく起動するかどうかをテストするには、次のurlパターンを試してみます。 IndexViewとDetailViewをインポートすることを忘れないでください。 1または2を最初にテストした後、他のビューのurlステートメントを追加してください。私が使用

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^music/index/$', IndexView.as_view() , name='Index'), 
    url(r'^music/detail/(?P<pk>[0-9]+)/$', DetailView.as_view() , name='Detail'), 
] 

URL命名し、次のようにindex.htmlを内のステートメントは、記述する必要があります:

<a href="{% url 'Detail' album.pk %}">{{ album.album_title }}</a> 

名前空間の音楽: 'は、それは暗黙的であると単純になりますので、省略されています。あなたは初心者のために混乱するかもしれないので、単純なアプリケーションのためにそれを残す必要があります。

+0

私はmusic.urlsファイルを持っていません。私は唯一のURLを持っています。pyファイル – bojack

+0

私は 'album_form.html'ファイルにforループを持っていますが、これは私が投稿したものです。おそらくそれが原因です。 – bojack

関連する問題