django registration

Django, Flask, Bottle, WSGI, CGI…
Antworten
geebe
User
Beiträge: 12
Registriert: Mittwoch 21. November 2018, 20:57

Hallo

seit einiger Zeit versuche ich in django(2.0, eclipse java 2018 09, python 3.7) eine user registration zu erstellen. Meine urls.py:

Code: Alles auswählen

from django.contrib import admin
from django.urls import path
from store import  views
#from store import registration
#from . import registration

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index, name='bookstore'),
    path('store/', views.store, name='store'),
    path('accounts/',registration.backends.default.urls),
   
]
liefert den Fehler
path('accounts/',registration.backends.default.urls),
NameError: name 'registration' is not defined
Ich habe in settings /installed_apps 'registration' eingetragen. Das ändert allerdings nichts. Die Fehlermeldung bleibt dieselbe.

Ich hoffe, Ihr könnt mir hier helfen.

Danke im Voraus MfG

geebe
Benutzeravatar
__blackjack__
User
Beiträge: 14130
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@geebe: Wo in dem gezeigten Code denkst Du `registration` denn definiert zu haben? Importe in Kommentaren haben keinen Effekt weil Kommentare per Definition keinen Effekt haben.
“It is easier to change the specification to fit the program than vice versa.” — Alan J. Perlis
geebe
User
Beiträge: 12
Registriert: Mittwoch 21. November 2018, 20:57

<t>die Auskommentierung der import Zeilen führt in beiden Fällen zu unresolved import bzw. cannot import name 'registration' from 'store'. FYI: Store enthält den Unterordner templates/registration mit den files<br/>
activation.html, activation_complete.html, activation_email.subject.html, activation_email.txt, registration_complete.html und registration_form.html.<br/>
<br/>
Den Fehler vermute ich auch in dieser Richtung, habe eben noch nicht (heraus)gefunden wie es richtig geht.</t>
Sirius3
User
Beiträge: 18297
Registriert: Sonntag 21. Oktober 2012, 17:20

Irgendwoher mußt Du doch die Idee gehabt haben, registration zu importieren. Niemand hier weiß, was `store` ist. wie soll da jemand helfen können?
Benutzeravatar
noisefloor
User
Beiträge: 4206
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ohne den Import von `registration` kann die Zeile `path('accounts/',registration.backends.default.urls)` nun mal auf keinen Fall funktionieren.

Gibt es eigentlich einen Grund, warum du von der Standardstruktur von Django abweichst? Wenn `registration` eine App ist, liegt per Default die `urls.py` in `registration.urls`?
Oder ist `registration` ein externes Modul für Django, dass du zusätzlich installiert hast`

Gruß, noisefloor
geebe
User
Beiträge: 12
Registriert: Mittwoch 21. November 2018, 20:57

Hallo

Bei meiner Website ist store ist eine Applikation des Projektes bookstore . Registration bezieht sich auf das Modul django-registration-redux2.5 . Beim Vorgehen orientiere ich mich an https://www.tangowithdjango.com.
Mein settings file:

Code: Alles auswählen

"""
Django settings for bookstore project.

Generated by 'django-admin startproject' using Django 2.1.4.

For more information on this file, see
https://docs.djangoproject.com/en/2.1/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.1/ref/settings/
"""

import os
#from test_app.settings import REGISTRATION_AUTO_LOGIN

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR,'templates')
 

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'chdur+4%0ic1q51ywy%)frkq*gdmt=vimket(0vqx-+9q2d1qu'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'registration',
    'store',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    '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',
]

ROOT_URLCONF = 'bookstore.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [TEMPLATE_DIR,],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'bookstore.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/

STATIC_URL = '/static/'

# registration

ACCOUNT_ACTIVATION_DAYS =7
REGISTRATION_AUTO_LOGIN =True

In urls.py löst das url pattern
path('accounts/',registration.backends.default.urls),
den Fehler " undefined variable :registration" aus. Bei der Suche nach der Ursache war ich bis jetzt noch nicht erfolgreich.

Grüsse

geebe
Benutzeravatar
__blackjack__
User
Beiträge: 14130
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@geebe: Die Ursache ist ganz offensichtlich das Du den Namen nicht definierst. Das sind Python-Grundlagen. Ausser den eingebauten Namen die in der Python-Dokumentation beschrieben sind, muss man jeden Namen den man verwendet auf irgend eine Weise definieren. Sei es das man das mit einer Zuweisung, ``def``, ``class``, oder ``with``/``as``, oder hier wahrscheinlich mit einem Import macht. Irgendwo her muss Python ja wissen was `registration` ist. Das fällt nicht einfach auf magische Weise vom Himmel.

Warum bindest Du das nicht so in das `urls`-Modul ein wie es in der Dokumentation von django-registration-redux beschrieben ist?
“It is easier to change the specification to fit the program than vice versa.” — Alan J. Perlis
geebe
User
Beiträge: 12
Registriert: Mittwoch 21. November 2018, 20:57

Hallo

Ich hatte vorher schon verschiedene Pfadangaben erfolglos ausprobiert, letzlich war

Code: Alles auswählen

path('accounts/',include('registration.backends.default.urls')),
(including another URLconf) ein mal erfolgreich. Beim zweiten Aufruf erhielt ich dann

TypeError: __init__() missing 1 required positional argument: 'on_delete'
und werde nun dem nachgehen. Die ursprüngliche Fragestellung hat sich zumindest vorerst erledigt.

Danke

geebe
Benutzeravatar
sparrow
User
Beiträge: 4546
Registriert: Freitag 17. April 2009, 10:28

Programme funktionieren unter gleichen Umständen niemals nur ein einziges Mal bzw. verhalten sich bei einem erneuten Durchlauf anders.
Du musst also etwas geändert haben.
geebe
User
Beiträge: 12
Registriert: Mittwoch 21. November 2018, 20:57

Ich lies mein projekt unverändert, habe aber, während der server lief, django registration-redux==2.5 durch die version 1.1 ersetzt. Die Website erschien dann nach einem reload wie vorgesehen - bis zum Neustart des Servers. Dann folgte der TypeError. Zunächst war ich etwas verwirrt, kann das Verhalten nun aber reproduzieren.
Antworten