Ограничение целочисленных значений в урлах django
У меня есть следующий Django URL, который позволяет пользователям зарегистрироваться для любого одного кода безопасности от 1 до 6.
path('add/<int:security_code>/', security_views.RegisterView.as_view(), name='register_code'),
Url должен отображать шаблон до 6 кодов безопасности, например
https://www.example.com/add/1/ #-- It should work
https://www.example.com/add/2/ #-- It should work
https://www.example.com/add/3/ #-- It should work
https://www.example.com/add/4/ #-- It should work
https://www.example.com/add/5/ #-- It should work
https://www.example.com/add/6/ #-- It should work
https://www.example.com/add/7/ #-- It should throw 404 when the user types a number greater than 6.
Какое изменение мне нужно сделать, чтобы ограничить URL для ограниченных кодов, он должен выдавать ошибку 404 или ошибку плохого запроса, если пользователь вручную вводит другое число. Я не хочу изменять представление, так как мне нужно будет добавить методы get
, а также post
.
from django.views import generic
from core import models
class RegisterView(generic.edit.CreateView):
model = models.SecurityCode
fields = ['name', 'code']
Есть ли способ сделать это, не изменяя часть views
?
Вы можете использовать re_path(…)
[Django-doc] для задания регулярного выражения:
from django.urls import re_path
re_path(
'add/(?P<security_code>[1-6])/$',
security_views.RegisterView.as_view(),
name='register_code'
),