Eatpository > settings.
"""
Django settings for Eatpository project.
Generated by 'django-admin startproject' using Django 4.0.6.
For more information on this file, see
<https://docs.djangoproject.com/en/4.0/topics/settings/>
For the full list of settings and their values, see
<https://docs.djangoproject.com/en/4.0/ref/settings/>
"""
from datetime import datetime
import os
import json
from django.core.exceptions import ImproperlyConfigured
from pathlib import Path
from .secrets import *
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
ROOT_DIR = os.path.dirname(BASE_DIR)
# Eatpository/backend/eatpository/settings.py
# BASE_DIR=Eatpository/backend
# Quick-start development settings - unsuitable for production
# See <https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/>
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = MY_SECRET_KEY
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# CORS
'corsheaders',
# DRF
'rest_framework',
'rest_framework.authtoken',
# rest_auth
'rest_auth',
# apps
'accounts',
'stores',
'information',
]
# Auth 유저 모델로 accounts의 User를 쓰겠다는 의미
AUTH_USER_MODEL = 'accounts.User'
# DRF auth settings - Token으로 User 찾아오기
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
]
}
JWT_SECRET_KEY = MY_SECRET_KEY
JWT_ALGORITHM = 'HS256'
MIDDLEWARE = [
# CORS 세팅
'corsheaders.middleware.CorsMiddleware',
#'django.middleware.common.CommonMiddleware', #새로 추가
'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',
]
# CORS 세팅 (CORS_ORIGIN_WHITELIST, CORS_ALLOW_CREDENTIALS)
CORS_ORIGIN_WHITELIST = ['<http://127.0.0.1:3000>', '<http://localhost:3000>']
CORS_ALLOW_CREDENTIALS = True
#CORS_ALLOW_ALL_ORIGINS=True #교체
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'PATCH',
'POST',
'PUT',
)
ROOT_URLCONF = 'Eatpository.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
},
},
]
WSGI_APPLICATION = 'Eatpository.wsgi.application'
# Database
# <https://docs.djangoproject.com/en/4.0/ref/settings/#databases>
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# Password validation
# <https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators>
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# <https://docs.djangoproject.com/en/4.0/topics/i18n/>
# 언어 시간 - 한국 세팅 (LANGUAGE_CODE, TIME_ZONE)
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# <https://docs.djangoproject.com/en/4.0/howto/static-files/>
# STATIC_URL = '/static/'
# STATICFILES_DIRS=[
# os.path.join(BASE_DIR,'static','images')
# ]
# # STATIC_ROOT 세팅
# STATIC_ROOT = os.path.join(BASE_DIR, 'static') ## 모든 정적 파일들을 한 곳으로 모아둘 경로
STATIC_URL = '/static/'
STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static/', 'selenium_images'),
# os.path.join(BASE_DIR, 'static', 'images'),
]
# STATIC_ROOT 세팅
# STATIC Files들을 어디에 집합시킬 것인지 결정
# 배포를 할 때 만들어둔 static 파일들을 총합해서 배포한다.
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# Default primary key field type
# <https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field>
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
AUTH_USER_MODEL = "accounts.Users"
ROOT_URLCONF = 'Eatpository.urls'
Eatpository > urls.py
"""Eatpository URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
<https://docs.djangoproject.com/en/4.0/topics/http/urls/>
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from Eatpository import settings
import statistics
from django.contrib import admin
from django.urls import path, include
from accounts import views
###새로운 코드###
#from rest_framework_jwt.views import obtain_jwt_token, verify_jwt_token, refresh_jwt_token
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.home, name='home'),
path('users/', include('accounts.urls')),
path('stores/', include('stores.urls')),
path('information/', include('information.urls')),
]
<head>
<meta charset="utf-8">
</head>
검색된 식당 이름 : {{info.store_name}} <br>
검색된 식당의 주소 : {{info.address}} <br><br>
<h1>식당 정보 저장을 원하는 경우</h1><br>
<form method = "POST" action = "<http://127.0.0.1:8000/stores/save/>">
{% csrf_token %}
{% load static %}
<h1 >밑에꺼 건드리지 마 </h1>
<textarea name="info">{{info}}</textarea>
<textarea name="image">{{image}}</textarea>
<!-- <input type="text" value = {{info.store_name}} name="store_name">
<input type="text" value = {{info.address}} name="address">
<input type="text" value = {{info.longitude}} name="longitude">
<input type="text" value = {{info.latitude}} name="latitude">
<input type="text" value = {{info.phone_number}} name="phone_number"> -->
<br><br>넣아줘야 함<br>
<input type="text" value = "영업 시간" name="time">
<input type="text" value = "메뉴" name="main_menu">
<textarea name="comment">식당에 대한 에디터 comment</textarea>
<select name="user">
<option value="admin1">admin1</option>
<option value="admin2">admin2</option>
<option value="admin3">admin3</option>
<option value="admin4">admin4</option>
</select>
<select name="category">
<option value="한식">한식</option>
<option value="중식">중식</option>
<option value="일식">일식</option>
<option value="양식">양식</option>
</select>
<select name="image1">
<option value="1">이미지1</option>
<option value="2">이미지2</option>
<option value="3">이미지3</option>
<option value="4">이미지4</option>
<option value="5">이미지5</option>
<option value="6">이미지6</option>
<option value="7">이미지7</option>
<option value="8">이미지8</option>
<option value="9">이미지9</option>
<option value="10">이미지10</option>
<option value="11">이미지11</option>
<option value="12">이미지12</option>
<option value="13">이미지13</option>
<option value="14">이미지14</option>
<option value="15">이미지15</option>
<option value="16">이미지16</option>
<option value="17">이미지17</option>
<option value="18">이미지18</option>
<option value="19">이미지19</option>
<option value="20">이미지20</option>
</select>
<select name="image2">
<option value="1">이미지1</option>
<option value="2">이미지2</option>
<option value="3">이미지3</option>
<option value="4">이미지4</option>
<option value="5">이미지5</option>
<option value="6">이미지6</option>
<option value="7">이미지7</option>
<option value="8">이미지8</option>
<option value="9">이미지9</option>
<option value="10">이미지10</option>
<option value="11">이미지11</option>
<option value="12">이미지12</option>
<option value="13">이미지13</option>
<option value="14">이미지14</option>
<option value="15">이미지15</option>
<option value="16">이미지16</option>
<option value="17">이미지17</option>
<option value="18">이미지18</option>
<option value="19">이미지19</option>
<option value="20">이미지20</option>
</select>
<select name="image3">
<option value="1">이미지1</option>
<option value="2">이미지2</option>
<option value="3">이미지3</option>
<option value="4">이미지4</option>
<option value="5">이미지5</option>
<option value="6">이미지6</option>
<option value="7">이미지7</option>
<option value="8">이미지8</option>
<option value="9">이미지9</option>
<option value="10">이미지10</option>
<option value="11">이미지11</option>
<option value="12">이미지12</option>
<option value="13">이미지13</option>
<option value="14">이미지14</option>
<option value="15">이미지15</option>
<option value="16">이미지16</option>
<option value="17">이미지17</option>
<option value="18">이미지18</option>
<option value="19">이미지19</option>
<option value="20">이미지20</option>
</select>
<!-- <input type="file" value = "이미지1" name="image1">
<input type="file" value = "이미지2" name="image2"> -->
<br><br>
<figure>
<figcaption>
Image 1
</figcaption>
<img src="{{image.1}}" width="200">
<figcaption>
Image 2
</figcaption>
<img src="{{image.2}}" width="200">
<figcaption>
Image 3
</figcaption>
<img src="{{image.3}}" width="200">
<figcaption>
Image 4
</figcaption>
<img src="{{image.4}}" width="200">
<figcaption>
Image 5
</figcaption>
<img src="{{image.5}}" width="200">
<figcaption>
Image 6
</figcaption>
<img src="{{image.6}}" width="200">
<figcaption>
Image 7
</figcaption>
<img src="{{image.7}}" width="200">
<figcaption>
Image 8
</figcaption>
<img src="{{image.8}}" width="200">
<figcaption>
Image 9
</figcaption>
<img src="{{image.9}}" width="200">
<figcaption>
Image 10
</figcaption>
<img src="{{image.10}}" width="200">
<!-- <figcaption>
Image 11
</figcaption>
<img src="{{image.11}}" width="200">
<figcaption>
Image 12
</figcaption>
<img src="{{image.12}}" width="200">
<figcaption>
Image 13
</figcaption>
<img src="{{image.13}}" width="200">
<figcaption>
Image 14
</figcaption>
<img src="{{image.14}}" width="200">
<figcaption>
Image 15
</figcaption>
<img src="{{image.15}}" width="200">
</figure> -->
<!-- <img src="{{image.1}}" width="200">
<img src="{{image.2}}" width="200">
<img src="{{image.3}}" width="200">
<img src="{{image.4}}" width="200">
<img src="{{image.5}}" width="200">
<img src="{{image.6}}" width="200">
<img src="{{image.7}}" width="200">
<img src="{{image.8}}" width="200">
<img src="{{image.9}}" width="200">
<img src="{{image.10}}" width="200">
<img src="{{image.11}}" width="200">
<img src="{{image.12}}" width="200">
<img src="{{image.13}}" width="200">
<img src="{{image.14}}" width="200">
<img src="{{image.15}}" width="200">
<img src="{{image.16}}" width="200">
<img src="{{image.17}}" width="200">
<img src="{{image.18}}" width="200">
<img src="{{image.19}}" width="200">
<img src="{{image.20}}" width="200"> -->
<img src="{% get_static_prefix %}{{info.id}}_1.jpg" width="200">
<img src="{% get_static_prefix %}{{info.id}}_2.jpg" width="200">
<img src="{% get_static_prefix %}{{info.id}}_3.jpg" width="200">
<img src="{% get_static_prefix %}{{info.id}}_4.jpg" width="200">
<br><br>
<input type="submit" value = "식당 저장하기">
</form>
<br><br>
<h2>식당 재검색</h2><br>
<form method = "POST" action = "<http://127.0.0.1:8000/stores/edit/>">
{% csrf_token %}
<input type="text" value = "식당 이름" name="store_name">
<!-- <input type="text" value = "운영 시간" name="time">
<input type="file" value = "이미지1" name="image1">
<input type="file" value = "이미지2" name="image2"> -->
<br><br>
<input type="submit" value = "검색!">
</form>