2016-03-28 5 views
0

Ich mache dieses django-programm, wo ich die login-seite, die registerseite und nachdem der benutzer anmeldet ich habe eine taste "rezept erstellen". Mein Problem ist, dass es nicht funktioniert.wie url in django zu erstellen

Dies ist urls.py:

from django.conf.urls import patterns, include, url 
from createprescription.views import * 
from . import views 

urlpatterns = patterns('', 
    url(r'^$', 'django.contrib.auth.views.login'), 
    url(r'^logout/$', logout_page), 
    url(r'^accounts/login/$', 'django.contrib.auth.views.login'), # If user is not login it will redirect to login page 
    url(r'^register/$', register), 
    url(r'^register/success/$', register_success), 
    url(r'^home/$', home), 
    url(r'^$', views.createprescription, name='createprescription'), 
    ) 

Dies ist von views.py:

from createprescription.forms import * 
from django.contrib.auth.decorators import login_required 
from django.contrib.auth import logout 
from django.views.decorators.csrf import csrf_protect 
from django.shortcuts import render_to_response 
from django.http import HttpResponseRedirect 
from django.template import RequestContext 


@csrf_protect 
def register(request): 
    if request.method == 'POST': 
     form = RegistrationForm(request.POST) 
     if form.is_valid(): 
      user = User.objects.create_user(
      username=form.cleaned_data['username'], 
      password=form.cleaned_data['password1'], 
      email=form.cleaned_data['email'] 
      ) 
      return HttpResponseRedirect('/register/success/') 
    else: 
    form = RegistrationForm() 
    variables = RequestContext(request, { 
    'form': form 
    }) 

    return render_to_response(
    'registration/register.html', 
    variables, 
    ) 

def register_success(request): 
    return render_to_response(
    'registration/success.html', 
    ) 

def logout_page(request): 
    logout(request) 
    return HttpResponseRedirect('/') 

@login_required 
def home(request): 
    return render_to_response(
    'home.html', 
    { 'user': request.user } 
    ) 

def createprescription(request): 
    return render(request, 'createprescription/createprescription.html', {})  

Und dies ist der Fehler:

Using the URLconf defined in cwbis.urls, Django tried these URL patterns, in this order: 

    ^admin/ 
    ^$ 
    ^logout/$ 
    ^accounts/login/$ 
    ^register/$ 
    ^register/success/$ 
    ^home/$ 
    ^$ [name='createprescription'] 

The current URL, createprescription, didn't match any of these. 
+0

Was nicht funktioniert? bemerkte auch, dass Sie Regex für zwei Links wiederholt haben, nur der erste funktioniert –

+0

Was ist die URL, die Sie besuchen möchten? – v1k45

+0

Der Fehler besagt, dass Sie keine URL haben, die "/ createprescription" entspricht. –

Antwort

0

Sie versuchen Login für Ihre Homepage zu zwingen, aber Dies ist nicht th Der Weg, um es zu implementieren. Diese beiden URLs sind widersprüchlich und das System verwendet nur die erste:

url(r'^$', 'django.contrib.auth.views.login'), 
url(r'^$', views.createprescription, name='createprescription'), 

den Fehler zu beheben, sollten Sie die Linie

url(r'^$', 'django.contrib.auth.views.login'), 

von Ihrem urls.py entfernen.

Um nur eingeloggte Benutzer zu ermöglichen, Ihr Rezept Seite, fügen Sie die folgenden Zeilen zu Ihrer views.py zu sehen:

from django.contrib.auth.decorators import login_required 
... 
@login_required 
def createprescription(request): 
    ... 
+0

funktioniert nicht –

+0

Wenn ich die erste URL lösche kann ich mich nicht einloggen –