Ответ 1
В 1.10 вы больше не можете передавать пути импорта до url()
, вам нужно передать фактическую функцию просмотра:
from posts.views import post_home
urlpatterns = [
...
url(r'^posts/$', post_home),
]
Я новичок в django и python. Во время сопоставления url в представлениях я получаю следующую ошибку: TypeError: view должен быть вызываемым или list/tuple в случае include().
Urls. py code: -
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^posts/$', "posts.views.post_home"), #posts is module and post_home
] # is a function in view.
view.py code: -
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
#function based views
def post_home(request):
response = "<h1>Success</h1>"
return HttpResponse(response)
Traceback
В 1.10 вы больше не можете передавать пути импорта до url()
, вам нужно передать фактическую функцию просмотра:
from posts.views import post_home
urlpatterns = [
...
url(r'^posts/$', post_home),
]
Замените шаблон URL-адреса администратора этим
url(r'^admin/', include(admin.site.urls))
Итак, ваш urls.py становится:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^posts/$', "posts.views.post_home"), #posts is module and post_home
]
URL-адреса admin вызываются include (до 1.9).
Для Django 1.11.2
В главном urls.py напишите:
from django.conf.urls import include,url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^posts/', include("Post.urls")),
]
И в файле appname/urls.py напишите:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$',views.post_home),
]
Ответ находится в project-dir/urls.py
Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
Чтобы дополнить ответ от @knbk, мы могли бы использовать шаблон ниже:
, как в 1.9:
from django.conf.urls import url, include
urlpatterns = [
url(r'^admin/', admin.site.urls), #it not allowed to use the include() in the admin.urls
url(r'^posts/$', include(posts.views.post_home),
]
, как должно быть в 1.10:
from your_project_django.your_app_django.view import name_of_your_view
urlpatterns = [
...
url(r'^name_of_the_view/$', name_of_the_view),
]
Не забудьте создать в your_app_django → views.py функцию для рендеринга вашего представления.
Вам нужно передать фактическую функцию просмотра
from posts.views import post_home
urlpatterns = [ ... url (r '^ posts/$', post_home), ]
Это прекрасно! Вы можете прочитать в URL Dispatcher Django и здесь Common Reguler Expressions URL-адреса Django