Python 如何在django中创建url
我制作了这个django程序,其中有登录页面、注册页面,用户登录后,我有一个按钮“创建处方”。我的问题是它不起作用 这是Python 如何在django中创建url,python,django,Python,Django,我制作了这个django程序,其中有登录页面、注册页面,用户登录后,我有一个按钮“创建处方”。我的问题是它不起作用 这是url.py: from django.conf.urls import patterns, include, url from createprescription.views import * from . import views urlpatterns = patterns('', url(r'^$', 'django.contrib.auth.views.l
url.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'),
)
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', {})
from django.contrib.auth.decorators import login_required
...
@login_required
def createprescription(request):
...
这是来自视图.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'),
)
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', {})
from django.contrib.auth.decorators import login_required
...
@login_required
def createprescription(request):
...
这就是错误:
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.
您试图强制登录您的主页,但这不是实现它的方法。这两个URL相互冲突,系统将仅使用第一个URL:
url(r'^$', 'django.contrib.auth.views.login'),
url(r'^$', views.createprescription, name='createprescription'),
要解决此错误,应删除该行
url(r'^$', 'django.contrib.auth.views.login'),
从您的url.py
为了只允许登录用户查看您的处方页面,请将以下行添加到您的视图.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'),
)
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', {})
from django.contrib.auth.decorators import login_required
...
@login_required
def createprescription(request):
...
什么不起作用?还注意到,您对两个链接重复了regex,只有第一个链接有效。您尝试访问的url是什么?错误是告诉您没有与“/createprescription”匹配的url。请有人帮忙?我不确定您想做什么,所以很难帮上忙。你什么时候收到错误?当事情发生时,你想做什么?您在同一个URL上同时拥有login和createprescription,因此其中只有一个可用。如果删除第一个URL,则无法登录