Как я могу настроить Django, развернутый «пользовательский сайт» с необходимым параметром URL?Python

Программы на Python
Ответить
Anonymous
 Как я могу настроить Django, развернутый «пользовательский сайт» с необходимым параметром URL?

Сообщение Anonymous »

Я пытаюсь создать «пользовательский сайт», используя Django развернуться. У меня есть существующая панель администратора, настроенная с использованием более базового подхода ModelAdmin , который работает хорошо. Тем не менее, мне нужно создать отдельную панель администратора, используя функцию «Пользовательский сайт» для использования с Django-Centans. Я хочу, чтобы структура URL выглядела как: http: // localhost: 8000/ardant-admin/$ tenant-id/. В рамках «Пользовательского сайта» арендаторы Django будут охватывать путь поиска Postgres к правильной схеме Postgres, и администратор сможет управлять всеми моделями для данного арендатора. < /P>
определил мой пользовательский сайт следующим образом: < /p>

Код: Выделить всё

from django.contrib import admin
from django.urls import path
from unfold.sites import UnfoldAdminSite
from unfold.admin import ModelAdmin
from tenant_app.models import Foo

class TenantAdminSite(UnfoldAdminSite):
# hopefully not needed -- but this is the first instance of admin:index causing problems
# index_template = "admin/dashboard.html"

def get_app_list(self, *args, **kwargs):
# this lives at apps/tenant_app and is the only app that this TenantAdminSite
# will use. Not sure if strings are valid here?
return ["tenant_app"]

def get_urls(self):
"""
Add custom URLs to the default admin site, capturing the tenant name.
"""
from django.urls import reverse

# Capture the tenant name as part of the URL
urls = super().get_urls()

# Add custom URL pattern to handle the index view based on tenant
custom_urls = [
path(
"/tenant-admin//", self.index_view, name="index"
),  # Tenant-specific index
]

return custom_urls + urls

def index_view(self, request, tenant_name):
"""
A custom view for the index page of the admin, taking the tenant name into account.
"""
# Use django-tenants' tenant context for the tenant-specific admin
from django_tenants.utils import tenant_context
with tenant_context(tenant_name):
context = self.each_context(request)
return self.render_to_response(context)

def index(self, request, schema_name, extra_context={}):
self.schema_name = schema_name
return super().index(request, extra_context)

tenant_admin_site = TenantAdminSite(name="tenant_admin_site")

@admin.register(Foo, site=tenant_admin_site)
class FooAdmin(ModelAdmin):
model = Foo

< /code>
... и urls.py as: < /p>
...
path("tenant-admin//", tenant_admin_site.urls),
...
Посещение http://localhost:8000/tenant-admin/0194 ... cb0ded71a/ теперь приводит к следующей ошибке, которая возникает, когда шаблон пытается создать URL-адрес с помощью URL-адрес admin:index:
Reverse for 'index' with no arguments not found. 2 pattern(s) tried: ['tenant\\-admin/(?P[^/]+)/\\Z', 'tenant\\-admin/(?P[^/]+)//tenant\\-admin/(?P[^/]+)/\\Z']

< /code>
Я не знаю, как продолжить. Я попытался переопределить все, казалось бы, релевантные методы в подклассе моего сайта и попытаться определить значение индекса, но ... возможно, у меня просто есть фундаментальное недопонимание того, как или , если может работать. /p>
среда: < /p>

python 3.13 < /li>
django 5 (последний) < / li>
развернуть 0,45,0 < /li>
< /ul>

Подробнее здесь: https://stackoverflow.com/questions/793 ... -parameter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»