Пользовательское представление с параметром email в django изменяет url и показывает код состояния http 301,302
модель myapp:
class GroupMailIds(models.Model):
local_part = models.CharField(
max_length=100,
verbose_name='local part',
help_text=hlocal_part
)
address = models.EmailField(unique=True)
domain = models.ForeignKey(Domain,on_delete=models.CASCADE,
related_name='domains')
def __str__(self):
return self.address
В myapp urls.py:
from . import views
from django.urls import path, include
from django.http import *
urlpatterns = [
path('', views.index, name='index'),
path('groupmailids/<str:email>/details',
views.get_groupmailid_details, name='get_groupmailid_details'),]
myapp views.py:
def get_groupmailid_details(request, email):
data = {}
if request.method == 'POST':
return redirect('home')
else:
try:
groupmailid_obj = GroupMailIds.objects.filter(address=email)[0]
print(groupmailid_obj, '--------groupmailid_objjjjjjjj')
except Exception as e:
groupmailid_obj = None
if groupmailid_obj:
data.update(
{'groupmailid_id':groupmailid_obj.id,
'address':groupmailid_obj.address,
})
print(data)
return JsonResponse(data)
Но когда в браузере я использую url:
localhost:8000/admin/mailmanager/groupmailids/newgroup@saintmartincanada.com/details
id отображает главное меню с сообщением:
Group email id with ID “newgroup@saintmartincanada.com/details” doesn’t exist. Perhaps it was deleted?
Приведенный выше код работал некоторое время очень хорошо, но внезапно перестал работать, в консоли можно увидеть сообщения журнала трассировки, такие как:
"GET /admin/mailmanager/groupmailids/newgroup@saintmartincanada.com/details HTTP/1.1" 301 0
[12/Jan/2022 18:18:22] "GET /admin/mailmanager/groupmailids/newgroup@saintmartincanada.com/details/ HTTP/1.1" 302 0
[12/Jan/2022 18:18:23] "GET /admin/mailmanager/groupmailids/newgroup@saintmartincanada.com/details/change/ HTTP/1.1" 30
Не удается решить эту проблему. Почему он добавляет '/change' к url? и возвращается на страницу администратора в GUI? Он показывает http статус код 301, 302 в логах? Я использую django 3.2, python 3.7. Пожалуйста, подскажите правильный код?
Наконец-то исправил это. В проекте urls.py мне нужно добавить урлы myapp перед добавлением урлов django admin по умолчанию:
urlpatterns = [
path('', include('django.contrib.auth.urls')),
path('admin/myapp/',include('myapp.urls')),
path('admin/', admin.site.urls),
]