0

Whenever a user selects a team within the sidebar of my dashboard, the corresponding team_id is assigned to a variable (that works). Now I would like the dashboard to update accordingly by fetching the new dashboard data for the selected team via an API (that works as well, but not for the assigned team_id).

Where I run into issues is to use the assigned variable team_id for the API requests.

The application is built on Django, hence I use view functions to fetch the API data.

Now the key questions is, how to use the team_id variable for the API requests to get the correct data in return (replacing the id '72' in below example with the js variable)?

Furthermore, do I then need to use a success function for Ajax additionally to the views function that will render the frontend?

This is my code so far:

views.py

def team_update(request):
    team_id = request.GET.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: "GET",
  url: "/dashboard/",
  data: {team: team_id},
  data_type: "json",
  success: function(team) {




    }

  });

});

Console error

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

network response

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.

I tried to replace the id within the API url with the variable team_id but that didn't work. I guess I have to somehow tell the view function that there is a variable called team_id first of all?

Thank you for your inputs.

JSRB
  • 2,492
  • 1
  • 17
  • 48

2 Answers2

1

You have to get team_id you're sending via ajax and interpolate your query string

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

Add slash to your ajax query url:

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

Regarding your furthermore question. Yes, you have to use your success callback in order to update your DOM/component state et.c. You could inspect response by doing

success: function(response) { console.log(response) }
Alex Antonov
  • 14,134
  • 7
  • 65
  • 142
  • Thank you for the insights. I edited my code accordingly, but it seems the views function still can't use the variable. I will update the code and error above. – JSRB Oct 02 '19 at 06:33
  • Updated @asiniy – JSRB Oct 02 '19 at 06:39
  • @Phanti look at slash section of my answer – Alex Antonov Oct 02 '19 at 06:50
  • It seems that worked, thanks. Now i end up with error 403 though, `Forbidden (403) CSRF verification failed. Request aborted. Help Reason given for failure: CSRF token missing or incorrect.` – JSRB Oct 02 '19 at 06:54
  • 1
    @Phanti it's a scope of different question, actually, your answer is here: https://stackoverflow.com/questions/5100539/django-csrf-check-failing-with-an-ajax-post-request – Alex Antonov Oct 02 '19 at 07:07
  • True. I will clean the thread later and post the working solution to my initial post. Thank you for the help. – JSRB Oct 02 '19 at 07:08
1

why are you using POST request???? you need GET request. also it is recommended to always use url names to avoid such mistakes

Atlas Bravoos
  • 360
  • 2
  • 12
  • go to your file named urls.py – Atlas Bravoos Oct 02 '19 at 06:56
  • 1
    add url name like so : url(r'^home/$',views.myview.as_view(),name='home'), – Atlas Bravoos Oct 02 '19 at 06:56
  • When I use GET i end up with this error: `TypeError at /dashboard/ list indices must be integers or slices, not str Request Method: GET Request URL: http://127.0.0.1:8000/dashboard/ Django Version: 2.2.5 Exception Type: TypeError Exception Value: list indices must be integers or slices, not str` – JSRB Oct 02 '19 at 06:57
  • then in ajax call use tha name like so : url:"{% url 'home' %}" – Atlas Bravoos Oct 02 '19 at 06:57
  • change POST request to GET request – Atlas Bravoos Oct 02 '19 at 06:57
  • for POST request you need CSRF Token which can be added like so : headers: { "X-CSRFToken": '{{csrf_token}}' } – Atlas Bravoos Oct 02 '19 at 06:58
  • have you changed request.POST.get to request.GET.get in views.py? – Atlas Bravoos Oct 02 '19 at 07:02
  • Yes, i get a TypeError `TypeError Exception Value: list indices must be integers or slices, not str` so as for the url you suggest to define names for my urls to use the name for the mapping instead of having to use the whole url everytime? Thanks – JSRB Oct 02 '19 at 07:06
  • The issue now is that I get an empty dic in return because the team_id is not used within the API request. That's why I have a TypeError, since the dic is empty. – JSRB Oct 02 '19 at 07:24
  • your are missing quotes in key of dict {team:team_id} to {'team':team_id} – Atlas Bravoos Oct 02 '19 at 07:28
  • Let us [continue this discussion in chat](https://chat.stackoverflow.com/rooms/200287/discussion-between-phanti-and-atlas-bravoos). – JSRB Oct 02 '19 at 07:30