Einfaches Gästebuch django: __init __ () nimmt 1 Positionsargument, aber 2 wurden angegeben

75

Ich bin neu in Django und versuche, eine einfache Gästebuchanwendung zu erstellen, um mich an die Umgebung zu gewöhnen. Ich erhalte den folgenden Fehler, kann den Fehler jedoch nicht finden:

Ausnahmewert: _ init _ () ​​akzeptiert 1 Positionsargument, aber 2 wurden angegeben.

from django.db import models
from django.contrib.auth.models import User
from django.contrib import admin

class Bericht(models.Model):
    titel = models.CharField(max_length=50)
    auteur = models.ForeignKey(User, blank=True)
    email = models.EmailField(max_length=75)
    inhoud = models.TextField(max_length=10000, blank=True)
    datum = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.auteur) + " : " + str(self.titel)

    class Meta:
        verbose_name_plural = "berichten"

class BerichtAdmin(admin.ModelAdmin):
    list_display = ["auteur", "datum", "titel"]
    list_filter = ["datum", "auteur"]

admin.site.register(Bericht, BerichtAdmin)

Die Aussicht

from django.shortcuts import render
from django.views.generic import ListView
from Gastenboek.models import *

class BerichtListView(ListView):
    model = Bericht.objects.all()
    template_name = 'template/bericht_lijst.html'
    paginate_by = 10
    context_object_name = "bericht_lijst"
# Create your views here.

urls.py

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'Niels.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    (r"^(\d+)/$", 'Gastenboek.views.BerichtListView'),
    (r"", 'Gastenboek.views.BerichtListView'),
)

Zurück verfolgen

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/

Django Version: 1.6.1
Python Version: 3.3.3
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'Gastenboek')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')


Traceback:
File "C:\Python33\lib\site-packages\django\core\handlers\base.py" in get_response
  114.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

Exception Type: TypeError at /
Exception Value: __init__() takes 1 positional argument but 2 were given
user2583429
quelle
1
Fügen Sie hier die vollständige Fehlermeldung ein.
Stefano Sanfilippo
5
Ich denke, Ihr Problem von model = Bericht.objects.all (), es sollte model = Bericht sein oder Ihre URLs fügen nicht .as_view () hinzu
mohd
1
Das Problem liegt in keinem der hier gezeigten Codes. Sie sollten immer den vollständigen Traceback einfügen. Ich vermute, dass das Problem in Ihrer urls.py liegt.
Daniel Roseman
Schauen Sie sich Folgendes an: stackoverflow.com/questions/16835651/typeerror-for-init/… Das Problem kann sehr ähnlich sein.
Benutzer
Vielen Dank, ich habe einige Informationen wie gewünscht aktualisiert.
user2583429

Antworten:

210

In Ihrer urls.py:

Sie vermissen .as_view ()

ändere es in:

(r"^(\d+)/$", Gastenboek.views.BerichtListView.as_view()),
(r"", Gastenboek.views.BerichtListView.as_view()),
Alvaro
quelle
Jetzt erhalte ich eine Fehlermeldung, dass Gastenboek nicht definiert ist
user2583429
Wenn ich das tue: aus dem Gastenboek-Import * heißt es, dass es kein Modul mit dem Namen site gibt.
user2583429
1
Sie sollten keine Platzhalter verwenden ... versuchen Sie, Gastenboek.views.BerichtListView
Alvaro
4
@Alvaro, Du hast mir gerade viele Kopfschmerzen erspart, danke!
GED125
@ GED125 froh, dass dies immer noch nützlich ist :)
Alvaro