Python 在Django中,是否可以使用相同的urlpattern指定单独的'http'动词?

Python 在Django中,是否可以使用相同的urlpattern指定单独的'http'动词?,python,django,django-urls,Python,Django,Django Urls,我正在Django 2.1中创建注册表。在典型示例中,人们使用相同的视图方法来显示表单和接受来自表单的POST请求,如下所示: Route::get('auth/register', ['as' => 'register_show', 'uses' => 'Auth\AuthController@show_registration_form']); Route::post('auth/register', ['as' => 'register', 'uses' => 'A

我正在
Django 2.1
中创建注册表。在典型示例中,人们使用相同的视图方法来显示表单和接受来自表单的
POST
请求,如下所示:

Route::get('auth/register', ['as' => 'register_show', 'uses' => 'Auth\AuthController@show_registration_form']);
Route::post('auth/register', ['as' => 'register', 'uses' => 'Auth\AuthController@register']);
url.py
中:

urlpatterns = [
    path('auth/register', auth.register, name='register')
]
from django.shortcuts import render
from blog_admin.forms import SignUpForm
from django.contrib.auth.forms import UserCreationForm


def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            # do registration stuff...
    else:
        form = SignUpForm()

        return render(request, 'blog_admin/auth/register.html', {'form': form})
from django.shortcuts import render
from blog_admin.forms import SignUpForm
from django.contrib.auth.forms import UserCreationForm


def show_registration_form(request):
    form = SignUpForm()

    return render(request, 'blog_admin/auth/register.html', {'form': form})

def register(request):
    # do registration stuff...
在名为
auth.py
的视图中:

urlpatterns = [
    path('auth/register', auth.register, name='register')
]
from django.shortcuts import render
from blog_admin.forms import SignUpForm
from django.contrib.auth.forms import UserCreationForm


def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            # do registration stuff...
    else:
        form = SignUpForm()

        return render(request, 'blog_admin/auth/register.html', {'form': form})
from django.shortcuts import render
from blog_admin.forms import SignUpForm
from django.contrib.auth.forms import UserCreationForm


def show_registration_form(request):
    form = SignUpForm()

    return render(request, 'blog_admin/auth/register.html', {'form': form})

def register(request):
    # do registration stuff...
但是我想使用单独的方法来显示表单和处理注册过程,还想使用相同的
urlpatterns
一个具有
GET
功能,另一个具有
POST
功能,如下所示:

Route::get('auth/register', ['as' => 'register_show', 'uses' => 'Auth\AuthController@show_registration_form']);
Route::post('auth/register', ['as' => 'register', 'uses' => 'Auth\AuthController@register']);
url.py中

    urlpatterns = [
        # can we limit it range, so that it only works for GET request
        path('auth/register', auth.show_registration_form, name='register_show'),
        # can we limit it range, so that it only works for POST request
        path('auth/register', auth.register, name='register')
    ]
在名为
auth.py
的视图中:

urlpatterns = [
    path('auth/register', auth.register, name='register')
]
from django.shortcuts import render
from blog_admin.forms import SignUpForm
from django.contrib.auth.forms import UserCreationForm


def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            # do registration stuff...
    else:
        form = SignUpForm()

        return render(request, 'blog_admin/auth/register.html', {'form': form})
from django.shortcuts import render
from blog_admin.forms import SignUpForm
from django.contrib.auth.forms import UserCreationForm


def show_registration_form(request):
    form = SignUpForm()

    return render(request, 'blog_admin/auth/register.html', {'form': form})

def register(request):
    # do registration stuff...
如果需要其他框架的更多示例,在
php
Laravel
中,可以通过以下方式完成:

Route::get('auth/register', ['as' => 'register_show', 'uses' => 'Auth\AuthController@show_registration_form']);
Route::post('auth/register', ['as' => 'register', 'uses' => 'Auth\AuthController@register']);

通常使用基于类的视图来分隔
GET
POST
,(和其他方法)。请参见此处的示例:谢谢,让我试试:)