我如何使用Ajax触发views.py函数?

问题描述 投票:0回答:2

[每当用户在我的仪表板的侧栏中选择一个团队时,就会将相应的team_id分配给一个变量(有效)。现在,我希望仪表板通过通过API获取选定团队的新仪表板数据进行相应的更新(也可以,但不适用于已分配的team_id)。

我遇到问题的地方是为API请求使用分配的变量team_id。

该应用程序基于Django构建,因此我使用视图函数来获取API数据。

现在的关键问题是,如何对API请求使用team_id变量以获取正确的数据作为回报(将下面示例中的ID'72'替换为js变量)?

此外,除了将要呈现前端的视图功能之外,我还需要对Ajax使用成功功能吗?

到目前为止,这是我的代码:

views.py

def team_update(request):
    team_id = request.POST.get('team')
    response = requests.get(f'http://www.api-football.com/demo/api/v2/teams/team/{team_id}')
    team_data = response.json()
    teams = team_data.get('api', {}).get('teams', [])
    if teams and len(teams) == 1:
        teams = teams[0]
    return render(request, 'index.html', {
        'name': teams['name'],
        'country': teams['country'],
        'founded': teams['founded'],
        'logo': teams['logo'],
        'venue_capacity': teams['venue_capacity'],
    })

JS

$('ul.subbar li a').on('click', function(e) { // Start function when user clicks on a team in the navbar
e.preventDefault(); // Stop loading new link
var team_id = $(this).attr("id"); // Assign id of clicked team name to variable 'team_id'
console.log(team_id); // test
$.ajax({    // initialize AJAX POST with the stated attributes
  method: "POST",
  url: "/dashboard",
  data: {team: team_id},
  data_type: "json",
  success: function(team) {




    }

  });

});

控制台错误

69
jquery.min.js:2 POST http://127.0.0.1:8000/dashboard 500 (Internal Server Error)
send @ jquery.min.js:2
ajax @ jquery.min.js:2
(anonymous) @ dashboard.js:7
dispatch @ jquery.min.js:2
v.handle @ jquery.min.js:2

网络响应

RuntimeError at /dashboard
You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:8000/dashboard/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.

Request Method: POST
Request URL: http://127.0.0.1:8000/dashboard
Django Version: 2.2.5
Python Executable: C:\Users\JONASB~1\Envs\DASOCC~1\Scripts\python.exe
Python Version: 3.7.4
Python Path: ['C:\\Users\\Jonas Blickle\\Desktop\\dasocc\\dasocc_site', 'C:\\Users\\JONASB~1\\Envs\\DASOCC~1\\Scripts\\python37.zip', 'C:\\Users\\JONASB~1\\Envs\\DASOCC~1\\DLLs', 'C:\\Users\\JONASB~1\\Envs\\DASOCC~1\\lib', 'C:\\Users\\JONASB~1\\Envs\\DASOCC~1\\Scripts', 'c:\\users\\jonas blickle\\appdata\\local\\programs\\python\\python37-32\\Lib', 'c:\\users\\jonas blickle\\appdata\\local\\programs\\python\\python37-32\\DLLs', 'C:\\Users\\JONASB~1\\Envs\\DASOCC~1', 'C:\\Users\\JONASB~1\\Envs\\DASOCC~1\\lib\\site-packages']
Server time: Wed, 2 Oct 2019 08:31:12 -0500
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'dasocc_app',
 'dasocc_blog',
 'dasocc_about']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']


Traceback:

File "C:\Users\JONASB~1\Envs\DASOCC~1\lib\site-packages\django\core\handlers\exception.py" in inner
  34.             response = get_response(request)

File "C:\Users\JONASB~1\Envs\DASOCC~1\lib\site-packages\django\utils\deprecation.py" in __call__
  93.             response = self.process_request(request)

File "C:\Users\JONASB~1\Envs\DASOCC~1\lib\site-packages\django\middleware\common.py" in process_request
  53.             path = self.get_full_path_with_slash(request)

File "C:\Users\JONASB~1\Envs\DASOCC~1\lib\site-packages\django\middleware\common.py" in get_full_path_with_slash
  93.                     'url': request.get_host() + new_path,

Exception Type: RuntimeError at /dashboard
Exception Value: You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:8000/dashboard/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.
Request information:
USER: [unable to retrieve the current user]

GET: No GET data

POST:
team = '69'

FILES: No FILES data

COOKIES:
csrftoken = 'KusolJDHU9B2fcFpNKvrrv3Ggdhxpps9P9jdzJNbQaFPR3n2bnAuUT67XJvXEosV'

META:
ALLUSERSPROFILE = 'C:\\ProgramData'
APPDATA = 'C:\\Users\\Jonas\\AppData\\Roaming'
ASL.LOG = 'Destination=file'
COMMONPROGRAMFILES = 'C:\\Program Files (x86)\\Common Files'
COMMONPROGRAMFILES(X86) = 'C:\\Program Files (x86)\\Common Files'
COMMONPROGRAMW6432 = 'C:\\Program Files\\Common Files'
COMPUTERNAME = 'JONASBLICKLE'
COMSPEC = 'C:\\Windows\\system32\\cmd.exe'
CONTENT_LENGTH = '7'
CONTENT_TYPE = 'application/x-www-form-urlencoded; charset=UTF-8'
DJANGO_SETTINGS_MODULE = 'dasocc_site.settings'
FP_NO_HOST_CHECK = 'NO'
GATEWAY_INTERFACE = 'CGI/1.1'
HOMEDRIVE = 'C:'
HOMEPATH = '\\Users\\Jonas Blickle'
HTTP_ACCEPT = '*/*'
HTTP_ACCEPT_ENCODING = 'gzip, deflate, br'
HTTP_ACCEPT_LANGUAGE = 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7'
HTTP_CACHE_CONTROL = 'no-cache'
HTTP_CONNECTION = 'keep-alive'
HTTP_COOKIE = 'csrftoken=KusolJDHU9B2fcFpNKvrrv3Ggdhxpps9P9jdzJNbQaFPR3n2bnAuUT67XJvXEosV'
HTTP_HOST = '127.0.0.1:8000'
HTTP_ORIGIN = 'http://127.0.0.1:8000'
HTTP_PRAGMA = 'no-cache'
HTTP_REFERER = 'http://127.0.0.1:8000/dashboard/'
HTTP_SEC_FETCH_MODE = 'cors'
HTTP_SEC_FETCH_SITE = 'same-origin'
HTTP_USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
HTTP_X_REQUESTED_WITH = 'XMLHttpRequest'
LOCALAPPDATA = 'C:\\Users\\Jonas\\AppData\\Local'
LOGONSERVER = '\\\\JONAS'
NUMBER_OF_PROCESSORS = '4'
ONEDRIVE = 'C:\\Users\\Jonas\\OneDrive'
OS = 'Windows_NT'
PATH = 'C:\\Users\\JONASB~1\\Envs\\DASOCC~1\\Scripts;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\ProgramData\\Oracle\\Java\\javapath;C:\\Program Files (x86)\\Intel\\iCLS Client\\;C:\\Program Files\\Intel\\iCLS Client\\;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\Intel\\Intel(R) Management Engine Components\\DAL;C:\\Program Files\\Intel\\Intel(R) Management Engine Components\\IPT;C:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\DAL;C:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\IPT;C:\\Program Files\\dotnet\\;C:\\Program Files\\Microsoft SQL Server\\130\\Tools\\Binn\\;C:\\Program Files\\Microsoft VS Code\\bin;C:\\Program Files\\Git\\cmd;C:\\Users\\Jonas Blickle\\AppData\\Local\\Programs\\Python\\Python37-32\\Scripts\\;C:\\Users\\Jonas Blickle\\AppData\\Local\\Programs\\Python\\Python37-32\\;C:\\Program Files\\heroku\\bin;C:\\Users\\Jonas Blickle\\AppData\\Local\\atom\\bin'
PATHEXT = '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC'
PATH_INFO = '/dashboard'
PROCESSOR_ARCHITECTURE = 'x86'
PROCESSOR_ARCHITEW6432 = 'AMD64'
PROCESSOR_IDENTIFIER = 'Intel64 Family 6 Model 58 Stepping 9, GenuineIntel'
PROCESSOR_LEVEL = '6'
PROCESSOR_REVISION = '3a09'
PROGRAMDATA = 'C:\\ProgramData'
PROGRAMFILES = 'C:\\Program Files (x86)'
PROGRAMFILES(X86) = 'C:\\Program Files (x86)'
PROGRAMW6432 = 'C:\\Program Files'
PROMPT = '(DASOCC~1) $P$G'
PSMODULEPATH = 'C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\'
PUBLIC = 'C:\\Users\\Public'
QUERY_STRING = ''
REMOTE_ADDR = '127.0.0.1'
REMOTE_HOST = ''
REQUEST_METHOD = 'POST'
RUN_MAIN = 'true'
SCRIPT_NAME = ''
SERVER_NAME = 'Jonas'
SERVER_PORT = '8000'
SERVER_PROTOCOL = 'HTTP/1.1'
SERVER_SOFTWARE = 'WSGIServer/0.2'
SESSIONNAME = 'Console'
SYSTEMDRIVE = 'C:'
SYSTEMROOT = 'C:\\Windows'
TEMP = 'C:\\Users\\JONASB~1\\AppData\\Local\\Temp'
TMP = 'C:\\Users\\JONASB~1\\AppData\\Local\\Temp'
VENV = 'dasocc_env'
VIRTUALENVWRAPPER_PROJECT_FILENAME = '.project'
VIRTUAL_ENV = 'C:\\Users\\JONASB~1\\Envs\\DASOCC~1'
WINDIR = 'C:\\Windows'
WORKON_HOME = 'C:\\Users\\Jonas\\Envs'
_OLD_VIRTUAL_PATH = 'C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\ProgramData\\Oracle\\Java\\javapath;C:\\Program Files (x86)\\Intel\\iCLS Client\\;C:\\Program Files\\Intel\\iCLS Client\\;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\Intel\\Intel(R) Management Engine Components\\DAL;C:\\Program Files\\Intel\\Intel(R) Management Engine Components\\IPT;C:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\DAL;C:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\IPT;C:\\Program Files\\dotnet\\;C:\\Program Files\\Microsoft SQL Server\\130\\Tools\\Binn\\;C:\\Program Files\\Microsoft VS Code\\bin;C:\\Program Files\\Git\\cmd;C:\\Users\\Jonas Blickle\\AppData\\Local\\Programs\\Python\\Python37-32\\Scripts\\;C:\\Users\\Jonas Blickle\\AppData\\Local\\Programs\\Python\\Python37-32\\;C:\\Program Files\\heroku\\bin;C:\\Users\\Jonas\\AppData\\Local\\atom\\bin'
_OLD_VIRTUAL_PROMPT = '$P$G'
wsgi.errors = <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>
wsgi.file_wrapper = ''
wsgi.input = <django.core.handlers.wsgi.LimitedStream object at 0x04879610>
wsgi.multiprocess = False
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'http'
wsgi.version = '(1, 0)'

Settings:
Using settings module dasocc_site.settings
ABSOLUTE_URL_OVERRIDES = {}
ADMINS = []
ALLOWED_HOSTS = ['127.0.0.1']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend']
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'auth.User'
BASE_DIR = 'C:\\Users\\Jonas\\Desktop\\dasocc\\dasocc_site'
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = 'csrftoken'
CSRF_COOKIE_PATH = '/'
CSRF_COOKIE_SAMESITE = 'Lax'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASES = {}
DATABASE_ROUTERS = []
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
DATETIME_FORMAT = 'N j, Y, P'
DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
DATE_FORMAT = 'N j, Y'
DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
DEBUG = 'TRUE'
DEBUG_PROPAGATE_EXCEPTIONS = False
DECIMAL_SEPARATOR = '.'
DEFAULT_CHARSET = 'utf-8'
DEFAULT_CONTENT_TYPE = 'text/html'
DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'webmaster@localhost'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_TABLESPACE = ''
DISALLOWED_USER_AGENTS = []
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = ''
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = '********************'
EMAIL_SUBJECT_PREFIX = '[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = 'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = None
FILE_UPLOAD_TEMP_DIR = None
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = []
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
IGNORABLE_404_URLS = []
INSTALLED_APPS = ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'dasocc_app', 'dasocc_blog', 'dasocc_about']
INTERNAL_IPS = []
LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
LANGUAGE_CODE = 'en-us'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_NAME = 'django_language'
LANGUAGE_COOKIE_PATH = '/'
LOCALE_PATHS = []
LOGGING = {}
LOGGING_CONFIG = 'logging.config.dictConfig'
LOGIN_REDIRECT_URL = '/accounts/profile/'
LOGIN_URL = '/accounts/login/'
LOGOUT_REDIRECT_URL = None
MANAGERS = []
MEDIA_ROOT = ''
MEDIA_URL = ''
MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = 'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT_DAYS = '********************'
PREPEND_WWW = False
ROOT_URLCONF = 'dasocc_site.urls'
SECRET_KEY = '********************'
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = False
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = None
SECURE_REDIRECT_EXEMPT = []
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'root@localhost'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SAMESITE = 'Lax'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
SETTINGS_MODULE = 'dasocc_site.settings'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
SHORT_DATE_FORMAT = 'm/d/Y'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = ['admin.E408', 'admin.E409', 'admin.E410']
STATICFILES_DIRS = []
STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = 'C:\\Users\\Jonas\\Desktop\\dasocc\\dasocc_site\\static/'
STATIC_URL = '/static/'
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/DASOCC_SITE/templates'], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages']}}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = ','
TIME_FORMAT = 'P'
TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE = 'America/Chicago'
USE_I18N = True
USE_L10N = False
USE_THOUSAND_SEPARATOR = False
USE_TZ = False
USE_X_FORWARDED_HOST = False
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = None
X_FRAME_OPTIONS = 'SAMEORIGIN'
YEAR_MONTH_FORMAT = 'F Y'


You're seeing this error because you have DEBUG = True in your
Django settings file. Change that to False, and Django will
display a standard page generated by the handler for this status code.

我试图用变量team_id替换API URL中的ID,但这没有用。我想我必须以某种方式告诉视图函数,首先有一个名为team_id的变量?

谢谢您的输入。

django ajax python-requests
2个回答
1
投票

您必须获取要通过ajax发送的team_id并插入查询字符串

team_id = request.POST.get('team')
response = requests.get(f'http://www.api-football.com/demo/api/v2/teams/team/{team_id}')

将斜杠添加到您的ajax查询URL:

url: "/dashboard/", # note slash added on the end

关于您的其他问题。是的,您必须使用success回调才能更新DOM /组件状态等。您可以通过执行]检查响应

success: function(response) { console.log(response) }

0
投票

您为什么使用POST请求????您需要GET请求。另外,建议始终使用网址名称,以避免出现此类错误

© www.soinside.com 2019 - 2024. All rights reserved.