我在对话框应用程序中使用反向,在成功处理表单后尝试导航到下一页:
class CommonlyFilesUpload(FormView):
form_class = CommonlyFilesForm
template_name = 'dialogs/add_commonly_files.html'
success_url = reverse('commonly_files')
def get(self, request):
form = CommonlyFilesForm()
return render(request, self.template_name, context={'form': form})
def post(self, request):
form_class = self.get_form_class()
form = self.get_form(form_class)
files = request.FILES.getlist('files_field')
if form.is_valid():
print(form.cleaned_data['bot'])
for f in files:
CommonlyFile.objects.create(file=f, bot=form.cleaned_data['bot'])
return self.form_valid(form)
else:
return self.form_invalid(form)
但是什么都没有出现,由于某种原因,反向在主应用程序的 urls.py 中查找此 url 模式名称:
django.core.exceptions.ImproperlyConfigured: The included URLconf 'multibot_crm.urls' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import.
如何告诉 reverse 在 url.py 中查找我需要的应用程序?像这样尝试:success_url = reverse('dialogs:commonly_files')
主应用程序(multibot_crm/urls.py):
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('bots/', include('bot_manager.urls')),
path('dialogs/', include('dialogs.urls'))
]
对话框应用程序(dialogs/urls.py),其中 reverse() 不想看到 name = common_files 的模式:
from django.urls import path
from . import views
urlpatterns = [
path('commonly_files/', views.CommonlyFiles.as_view(), name='commonly_files'),
path('commonly_files/upload', views.CommonlyFilesUpload.as_view(), name='commonly_files_upload'),
]
这就是它应该如何工作的方式。