Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59
1

Появляется Exception TypeError после запуска Django проекта

12.02.2018, 12:58. Показов 5571. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Суть в следующем: Имеется в DjangoProject/urls.py:
Python
1
2
3
4
5
6
7
from django.conf.urls import url
from django.contrib import admin
 
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^goods/', 'myapplication.urls')
]
А в папке приложения DjangoProject/myapplication/urls.py вот такое:
Python
1
2
3
4
5
6
from django.conf.urls import url
from myapplication import views
urlpatterns = [
    url(r'^$', views.index, name="index"),
    #url(r'^goods/$', views.good, name="good")
]
В результате выскакивает
Python
1
raise TypeError('view must be a callable or a list/tuple in the case of include().')
В каком из urls.py и что надо поменять
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2018, 12:58
Ответы с готовыми решениями:

Появляется окно CPU после начала запуска проекта
Проект компилируется и собирается без ошибок. Когда нажимаю запуск - появляется окно CPU и дальше...

При компиляции не появляется файл запуска моего проекта (экзешник)
Здравствуйте! Может кто-нибудь знает, из-за чего при компиляции проекта в конечной папке не...

При создании проекта вместо запуска или отладки появляется Присоединение, а обозреватель решений не показывает проект
Доброго времени суток. Недавно начал изучать программирование на c# в visual studio 2019. Для...

Появляется BSOD после запуска VirtualBox
Установил VirtualBox. Запускаю машину и появляется экран смерти,именно на самом компе,а не на...

После запуска программы появляется BSOD
Доброго времени суток друзья! Столкнулся с такой проблемой, после запуска программы ( у меня...

11
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
12.02.2018, 14:18 2
Цитата Сообщение от phoenix_css Посмотреть сообщение
В каком из urls.py и что надо поменять
Обычно джанго помимо типа ошибки пишет номер строки, в которой эта ошибка произошла.

Могу предположить, что ошибка скорее всего здесь:
Python
1
    url(r'^goods/', 'myapplication.urls')
Вторым аргументом должна передаваться либо функция либо список, тк именно такого поведения ожидает функция url:
Python
1
2
3
4
5
6
7
8
9
def url(regex, view, kwargs=None, name=None):
    if isinstance(view, (list, tuple)):
        # For include(...) processing.
        urlconf_module, app_name, namespace = view
        return RegexURLResolver(regex, urlconf_module, kwargs, app_name=app_name, namespace=namespace)
    elif callable(view):
        return RegexURLPattern(regex, view, kwargs, name)
    else:
        raise TypeError('view must be a callable or a list/tuple in the case of include().')
например, как вы сделали ниже, но закомментировали почему-то:
Python
1
    url(r'^goods/$', views.good, name="good")
Соответственно в views.py должна быть функция
Python
1
def good(request):
которая должна возвращать ответ
0
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59
12.02.2018, 14:45  [ТС] 3
Но что мне прописать в urlpatterns моего DjangoProject/urls.py, чтобы при обращении http://localhost:8000/goods вызывался views.py из моего myapplication?

Добавлено через 21 минуту
Исправил в DjangoProject/urls.py
Python
1
2
3
4
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^goods/', include('myapplication.urls'))
]
Далее, написал простого клиента:
Python
1
2
3
4
5
6
7
import requests
import json
url = "http://localhost:8000/goods/index"
data = {'data': [{'key1': 'val1'}, {'key2': 'val2'}]}
headers = {'content-type': 'application/json'}
r = requests.post(url, data=json.dumps(data), headers=headers)
print(r.text)
A Django теперь выдаёт:
Python
1
2
Not Found: goods/index
[12/Feb/2018 14:38:04] "POST goods/index HTTP/1.1" 404 2058
Во views.py функция index(request) есть.
0
Эксперт по компьютерным сетям
5901 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,009
12.02.2018, 16:18 4
Цитата Сообщение от phoenix_css Посмотреть сообщение
чтобы при обращении http://localhost:8000/goods
Цитата Сообщение от phoenix_css Посмотреть сообщение
url = "http://localhost:8000/goods/index"
не сходится
0
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
12.02.2018, 16:21 5
Цитата Сообщение от phoenix_css Посмотреть сообщение
Not Found: goods/index
Правильно, регулярки ж для него не задано. В myapplication/urls.py пропишите
Python
1
    url(r'^index$', views.index, name="index")
0
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59
12.02.2018, 16:31  [ТС] 6
Написал, всё равно не видит:
Not Found: /goods/index/

Добавлено через 1 минуту
Jabbson, небольшая опечатка. Там как раз http://localhost:8000/goods/index/
0
Эксперт по компьютерным сетям
5901 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,009
12.02.2018, 16:46 7
Цитата Сообщение от phoenix_css Посмотреть сообщение
Написал, всё равно не видит:
выложите сюда полностью свои оба urls,
свой views, и версию джанги, а то мы тут долго гадать будем.
0
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59
12.02.2018, 17:03  [ТС] 8
DjangoProject/urls.py:
Python
1
2
3
4
5
6
7
from django.conf.urls import url, include
from django.contrib import admin
 
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^goods/$', include('myapplication.urls')),
]
А теперь myapplication/urls.py:
Python
1
2
3
4
5
6
7
8
from django.conf.urls import url
from myapplication import views
 
urlpatterns = [
    #url(r'^$', views.index, name="index"),
    #url(r'^goods/index$', views.index)
    url(r'^index$', views.index, name="index")
]
Версия Django 1.11.7
Ну а это myapplication/views.py:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from django.shortcuts import render
from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json
# Create your views here.
 
 
@csrf_exempt
 
 
def index(request):
    print("Trying to get data...")
    if request.method == 'POST':
        received_json_data = request.body
        d = json.loads(received_json_data)
     return JsonResponse({'foo': 'bar'})
0
Эксперт по компьютерным сетям
5901 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,009
12.02.2018, 17:38 9
Доллары - это хорошо, но не всегда. Убирайте в обоих urls.
0
Эксперт по компьютерным сетям
5901 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,009
12.02.2018, 17:40 10
после этого

Появляется Exception TypeError после запуска Django проекта

Появляется Exception TypeError после запуска Django проекта
0
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
12.02.2018, 17:59 11
Вот интересно, в посте #3 было
Python
1
    url(r'^goods/', include('myapplication.urls'))
а потом в #8 уже
Python
1
    url(r'^goods/$', include('myapplication.urls')),
и мы еще удивляемся, почему:
Цитата Сообщение от phoenix_css Посмотреть сообщение
всё равно не видит

Не по теме:

Пора записываться на курсы телепатии



PS: phoenix_css, учите регулярные выражения
0
Эксперт по компьютерным сетям
5901 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,009
12.02.2018, 18:08 12
ну справедливости ради, стоит отметить, что тут
Цитата Сообщение от netBool Посмотреть сообщение
url(r'^index$', views.index, name="index")
доллар приведет к тому, что если поставить слеш в конце урла в браузере, то страница упадет.
0
12.02.2018, 18:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2018, 18:08
Помогаю со студенческими работами здесь

После запуска появляется окно и сразу пропадает
Я хотел создать exe файл Python. Посмотрел, как это сделать в данном ролике:...

После запуска не появляется стандартная страница laravel
Здравствуйте. Вообщем удалось установить laravel(наконец-то) . Но после установки появляется шаблон...

Кнопки нет при программировании, а после запуска появляется
Помогите, пожалуйста. Скачал текстовый редактор с исходниками, и не могу исправить чтобы кнопка...

после запуска Setup.exe не появляется окно установки MatLab
после запуска Setup.exe появляется сообщение "Подождите, пока Windows настраивает "Microsoft Visual...

После запуска windows 7 появляется серый экран и не отвечает проводник
После запуска windows появляется серый экран и не отвечает проводник


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru