Python 如何在django中创建url

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

我制作了这个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.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,则无法登录