Compare commits

...

2 commits

Author SHA1 Message Date
62800c9776 added useAPI for backend communication 2025-02-11 20:05:09 +01:00
e9403fea68 added corsheaders 2025-02-11 20:05:00 +01:00
7 changed files with 54 additions and 5 deletions

View file

@ -5,3 +5,6 @@ DATABASE_HOST=postgres
DATABASE_PORT=5432 DATABASE_PORT=5432
DJANGO_ENV= DJANGO_ENV=
BACKEND_URL=localhost:8000
FRONTEND_URL=localhost:3000

View file

@ -62,11 +62,13 @@ INSTALLED_APPS = [
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
"debug_toolbar", 'debug_toolbar',
'rest_framework', 'rest_framework',
'corsheaders',
] ]
MIDDLEWARE = [ MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware', 'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
@ -74,7 +76,7 @@ MIDDLEWARE = [
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
"debug_toolbar.middleware.DebugToolbarMiddleware", 'debug_toolbar.middleware.DebugToolbarMiddleware',
] ]
ROOT_URLCONF = 'backend.urls' ROOT_URLCONF = 'backend.urls'
@ -153,3 +155,7 @@ STATIC_URL = 'static/'
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field # https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
CORS_ALLOWED_ORIGINS = [
env.str("FRONTEND_URL", "http://localhost:3000"),
]

View file

@ -14,6 +14,7 @@ dependencies = [
"django-debug-toolbar>=5.0.1", "django-debug-toolbar>=5.0.1",
"django-environ>=0.12.0", "django-environ>=0.12.0",
"wait-for-it>=2.3.0", "wait-for-it>=2.3.0",
"django-cors-headers>=4.7.0",
] ]
[tool.uv] [tool.uv]

View file

@ -30,6 +30,7 @@ version = "0.1.0"
source = { virtual = "." } source = { virtual = "." }
dependencies = [ dependencies = [
{ name = "django" }, { name = "django" },
{ name = "django-cors-headers" },
{ name = "django-debug-toolbar" }, { name = "django-debug-toolbar" },
{ name = "django-environ" }, { name = "django-environ" },
{ name = "djangorestframework" }, { name = "djangorestframework" },
@ -41,6 +42,7 @@ dependencies = [
[package.metadata] [package.metadata]
requires-dist = [ requires-dist = [
{ name = "django", specifier = ">=5.1.5" }, { name = "django", specifier = ">=5.1.5" },
{ name = "django-cors-headers", specifier = ">=4.7.0" },
{ name = "django-debug-toolbar", specifier = ">=5.0.1" }, { name = "django-debug-toolbar", specifier = ">=5.0.1" },
{ name = "django-environ", specifier = ">=0.12.0" }, { name = "django-environ", specifier = ">=0.12.0" },
{ name = "djangorestframework", specifier = ">=3.15.2" }, { name = "djangorestframework", specifier = ">=3.15.2" },
@ -84,6 +86,19 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/11/e6/e92c8c788b83d109f34d933c5e817095d85722719cb4483472abc135f44e/Django-5.1.5-py3-none-any.whl", hash = "sha256:c46eb936111fffe6ec4bc9930035524a8be98ec2f74d8a0ff351226a3e52f459", size = 8276957 }, { url = "https://files.pythonhosted.org/packages/11/e6/e92c8c788b83d109f34d933c5e817095d85722719cb4483472abc135f44e/Django-5.1.5-py3-none-any.whl", hash = "sha256:c46eb936111fffe6ec4bc9930035524a8be98ec2f74d8a0ff351226a3e52f459", size = 8276957 },
] ]
[[package]]
name = "django-cors-headers"
version = "4.7.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "asgiref" },
{ name = "django" },
]
sdist = { url = "https://files.pythonhosted.org/packages/93/6c/16f6cb6064c63074fd5b2bd494eb319afd846236d9c1a6c765946df2c289/django_cors_headers-4.7.0.tar.gz", hash = "sha256:6fdf31bf9c6d6448ba09ef57157db2268d515d94fc5c89a0a1028e1fc03ee52b", size = 21037 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/7e/a2/7bcfff86314bd9dd698180e31ba00604001606efb518a06cca6833a54285/django_cors_headers-4.7.0-py3-none-any.whl", hash = "sha256:f1c125dcd58479fe7a67fe2499c16ee38b81b397463cf025f0e2c42937421070", size = 12794 },
]
[[package]] [[package]]
name = "django-debug-toolbar" name = "django-debug-toolbar"
version = "5.0.1" version = "5.0.1"

View file

@ -0,0 +1,19 @@
import type { UseFetchOptions } from "nuxt/app";
export function useAPI<T>(
endpoint: string,
options?: UseFetchOptions<T>,
) {
if (!endpoint.startsWith("/")) {
endpoint = `/${endpoint}`
}
const cfg = useRuntimeConfig()
const fullUrl = `${cfg.public.backendUrl}${endpoint}`
return useFetch(
fullUrl,
{...options}
)
}

View file

@ -8,6 +8,11 @@ export default defineNuxtConfig({
build: { build: {
transpile: ['vuetify'], transpile: ['vuetify'],
}, },
runtimeConfig: {
public: {
backendUrl: process.env.BACKEND_URL ?? "http://localhost:8000"
},
},
modules: [ modules: [
(_options, nuxt) => { (_options, nuxt) => {
nuxt.hooks.hook('vite:extendConfig', (config) => { nuxt.hooks.hook('vite:extendConfig', (config) => {

View file

@ -1,3 +1,3 @@
<template> <template>
Index file Index file
</template> </template>