From 3913a84923f820e0772e9d7e39dc82f86ceebb8b Mon Sep 17 00:00:00 2001 From: sharifah Date: Sun, 5 Apr 2026 04:24:48 +0300 Subject: [PATCH 1/2] lab templates --- GoogleSearch/GoogleSearch/__init__.py | 0 GoogleSearch/GoogleSearch/asgi.py | 16 ++ GoogleSearch/GoogleSearch/settings.py | 74 ++++++++ GoogleSearch/GoogleSearch/urls.py | 10 + GoogleSearch/GoogleSearch/wsgi.py | 16 ++ GoogleSearch/main/__init__.py | 0 GoogleSearch/main/admin.py | 3 + GoogleSearch/main/apps.py | 5 + GoogleSearch/main/migrations/__init__.py | 0 GoogleSearch/main/models.py | 3 + GoogleSearch/main/static/css/style.css | 172 ++++++++++++++++++ GoogleSearch/main/static/images/camera.png | Bin 0 -> 7604 bytes .../main/static/images/google-logo.png | Bin 0 -> 13504 bytes .../main/static/images/mircophone.png | Bin 0 -> 7737 bytes .../main/static/images/termsOfService.rtf | 70 +++++++ .../static/images/tos_main_illustration.svg | 1 + GoogleSearch/main/templates/main/base.html | 49 +++++ GoogleSearch/main/templates/main/index.html | 30 +++ GoogleSearch/main/templates/main/terms.html | 37 ++++ GoogleSearch/main/tests.py | 3 + GoogleSearch/main/urls.py | 9 + GoogleSearch/main/views.py | 7 + GoogleSearch/manage.py | 22 +++ 23 files changed, 527 insertions(+) create mode 100644 GoogleSearch/GoogleSearch/__init__.py create mode 100644 GoogleSearch/GoogleSearch/asgi.py create mode 100644 GoogleSearch/GoogleSearch/settings.py create mode 100644 GoogleSearch/GoogleSearch/urls.py create mode 100644 GoogleSearch/GoogleSearch/wsgi.py create mode 100644 GoogleSearch/main/__init__.py create mode 100644 GoogleSearch/main/admin.py create mode 100644 GoogleSearch/main/apps.py create mode 100644 GoogleSearch/main/migrations/__init__.py create mode 100644 GoogleSearch/main/models.py create mode 100644 GoogleSearch/main/static/css/style.css create mode 100644 GoogleSearch/main/static/images/camera.png create mode 100644 GoogleSearch/main/static/images/google-logo.png create mode 100644 GoogleSearch/main/static/images/mircophone.png create mode 100644 GoogleSearch/main/static/images/termsOfService.rtf create mode 100644 GoogleSearch/main/static/images/tos_main_illustration.svg create mode 100644 GoogleSearch/main/templates/main/base.html create mode 100644 GoogleSearch/main/templates/main/index.html create mode 100644 GoogleSearch/main/templates/main/terms.html create mode 100644 GoogleSearch/main/tests.py create mode 100644 GoogleSearch/main/urls.py create mode 100644 GoogleSearch/main/views.py create mode 100644 GoogleSearch/manage.py diff --git a/GoogleSearch/GoogleSearch/__init__.py b/GoogleSearch/GoogleSearch/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GoogleSearch/GoogleSearch/asgi.py b/GoogleSearch/GoogleSearch/asgi.py new file mode 100644 index 0000000..07cf612 --- /dev/null +++ b/GoogleSearch/GoogleSearch/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for GoogleSearch project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/6.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'GoogleSearch.settings') + +application = get_asgi_application() diff --git a/GoogleSearch/GoogleSearch/settings.py b/GoogleSearch/GoogleSearch/settings.py new file mode 100644 index 0000000..3e1c74a --- /dev/null +++ b/GoogleSearch/GoogleSearch/settings.py @@ -0,0 +1,74 @@ +from pathlib import Path +import os + + +BASE_DIR = Path(__file__).resolve().parent.parent + + +SECRET_KEY = 'django-insecure--pjdj6zn+0b323ggl+5w$i)_yi_*66_2s(5*0alr@b6*8$z2^t' +DEBUG = True +ALLOWED_HOSTS = [] + + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'main', +] + +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', +] + +ROOT_URLCONF = 'GoogleSearch.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'GoogleSearch.wsgi.application' + + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +LANGUAGE_CODE = 'en-us' +TIME_ZONE = 'UTC' +USE_I18N = True +USE_TZ = True + + +STATIC_URL = 'static/' + + +STATICFILES_DIRS = [ + BASE_DIR / "main" / "static", +] + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' \ No newline at end of file diff --git a/GoogleSearch/GoogleSearch/urls.py b/GoogleSearch/GoogleSearch/urls.py new file mode 100644 index 0000000..ea1bc36 --- /dev/null +++ b/GoogleSearch/GoogleSearch/urls.py @@ -0,0 +1,10 @@ +from django.contrib import admin +from django.urls import path, include + +urlpatterns = [ + +path('admin/', admin.site.urls), + +path('', include('main.urls')), + +] \ No newline at end of file diff --git a/GoogleSearch/GoogleSearch/wsgi.py b/GoogleSearch/GoogleSearch/wsgi.py new file mode 100644 index 0000000..48684be --- /dev/null +++ b/GoogleSearch/GoogleSearch/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for GoogleSearch project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/6.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'GoogleSearch.settings') + +application = get_wsgi_application() diff --git a/GoogleSearch/main/__init__.py b/GoogleSearch/main/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GoogleSearch/main/admin.py b/GoogleSearch/main/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/GoogleSearch/main/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/GoogleSearch/main/apps.py b/GoogleSearch/main/apps.py new file mode 100644 index 0000000..833bff6 --- /dev/null +++ b/GoogleSearch/main/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class MainConfig(AppConfig): + name = 'main' diff --git a/GoogleSearch/main/migrations/__init__.py b/GoogleSearch/main/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GoogleSearch/main/models.py b/GoogleSearch/main/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/GoogleSearch/main/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/GoogleSearch/main/static/css/style.css b/GoogleSearch/main/static/css/style.css new file mode 100644 index 0000000..2b01549 --- /dev/null +++ b/GoogleSearch/main/static/css/style.css @@ -0,0 +1,172 @@ + +html, body { + height: 100%; + margin: 0; + padding: 0; +} + +body { + font-family: 'Roboto', arial, sans-serif; + display: flex; + flex-direction: column; + min-height: 100vh; +} + + +nav { + display: flex; + justify-content: flex-end; + align-items: center; + padding: 6px 15px; + gap: 15px; + height: 60px; +} + +nav a { + text-decoration: none; + color: rgba(0,0,0,0.87); + font-size: 13px; +} + +.signin-btn { + background-color: #1a73e8; + color: white; + padding: 9px 23px; + border: none; + border-radius: 4px; + font-weight: 500; + cursor: pointer; +} + + +main { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.search-container { + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + margin-top: -50px; +} + +.logo { + width: 272px; + margin-bottom: 25px; +} + + +.search-box { + display: flex; + align-items: center; + border: 1px solid #dfe1e5; + border-radius: 24px; + width: 584px; + max-width: 90%; + height: 44px; + padding: 0 15px; + transition: box-shadow 0.2s; + background-color: #fff; +} + +.search-box:hover { + box-shadow: 0 1px 6px rgba(32,33,36,0.28); + border-color: transparent; +} + +.search-input { + border: none; + flex: 1; + height: 100%; + outline: none; + font-size: 16px; + margin: 0 10px; + background: transparent; +} + + +.search-icons-group { + display: flex; + align-items: center; + gap: 12px; +} + +.colored-icon { + width: 24px; + height: 24px; + cursor: pointer; + object-fit: contain; +} + +.material-icons { + color: #9aa0a6; + font-size: 20px; +} + + +.buttons-group { + margin-top: 25px; + display: flex; + justify-content: center; + gap: 12px; +} + +.btn { + background-color: #f8f9fa; + border: 1px solid #f8f9fa; + color: #3c4043; + padding: 0 16px; + height: 36px; + min-width: 54px; + border-radius: 4px; + cursor: pointer; + font-size: 14px; + transition: all 0.1s; +} + +.btn:hover { + border: 1px solid #dadce0; + box-shadow: 0 1px 1px rgba(0,0,0,0.1); + color: #202124; +} + +.lang-info { + margin-top: 25px; + font-size: 13px; +} + +.lang-info a { + color: #1a0dab; + text-decoration: none; +} + + +footer { + background: #f2f2f2; + color: #70757a; + width: 100%; + margin-top: auto; +} + +.footer-top { + padding: 15px 30px; + border-bottom: 1px solid #dadce0; +} + +.footer-bottom { + display: flex; + justify-content: space-between; + padding: 15px 30px; +} + +.footer-bottom a { + text-decoration: none; + color: #70757a; + margin-right: 20px; + font-size: 14px; +} \ No newline at end of file diff --git a/GoogleSearch/main/static/images/camera.png b/GoogleSearch/main/static/images/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..4ecc70532054bba37a5c170f098176e6f4781889 GIT binary patch literal 7604 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 literal 0 HcmV?d00001 diff --git a/GoogleSearch/main/static/images/termsOfService.rtf b/GoogleSearch/main/static/images/termsOfService.rtf new file mode 100644 index 0000000..6cbe1e0 --- /dev/null +++ b/GoogleSearch/main/static/images/termsOfService.rtf @@ -0,0 +1,70 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2709 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Arial-BoldMT;\f1\fswiss\fcharset0 ArialMT;} +{\colortbl;\red255\green255\blue255;\red24\green25\blue27;\red255\green255\blue255;\red19\green0\blue155; +} +{\*\expandedcolortbl;;\cssrgb\c12549\c12941\c14118;\cssrgb\c100000\c100000\c100000;\cssrgb\c10196\c5098\c67059; +} +{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}} +{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} +\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 +\deftab720 +\pard\pardeftab720\partightenfactor0 + +\f0\b\fs48 \cf2 \cb3 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 Google Terms of Service\ +\pard\pardeftab720\sa280\partightenfactor0 + +\f1\b0\fs28 \cf2 Effective 5 January 2022\'a0|\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms/archive?hl=en-SA&fg=1"}}{\fldrslt \cf4 \strokec4 Archived versions}}\'a0|\'a0{\field{\*\fldinst{HYPERLINK "https://www.gstatic.com/policies/terms/pdf/20220105/it7r24p9/google_terms_of_service_en-GB.pdf"}}{\fldrslt \cf4 \strokec4 Download PDF}}\ +\pard\pardeftab720\sa280\partightenfactor0 +{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#footnote-country-version"}}{\fldrslt \cf4 \strokec4 Country version:}}\'a0Saudi Arabia\ +\pard\pardeftab720\partightenfactor0 +\cf2 \ +\pard\pardeftab720\sa298\partightenfactor0 + +\f0\b\fs36 \cf2 What\'92s covered in these terms\ +\pard\pardeftab720\sa280\partightenfactor0 + +\fs28 \cf2 We know it\'92s tempting to skip these Terms of Service, but it\'92s important to establish what you can expect from us as you use Google\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#footnote-services"}}{\fldrslt \cf4 \strokec4 services}}, and what we expect from you.\ +\pard\pardeftab720\sa280\partightenfactor0 + +\f1\b0 \cf2 These Terms of Service reflect\'a0{\field{\*\fldinst{HYPERLINK "https://about.google/intl/en-GB_SA/how-our-business-works"}}{\fldrslt \cf4 \strokec4 the way that Google\'92s business works}}, the laws that apply to our company, and\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/about/philosophy.html?hl=en_GB"}}{\fldrslt \cf4 \strokec4 certain things that we\'92ve always believed to be true}}. As a result, these Terms of Service help define Google\'92s relationship with you as you interact with our services. For example, these terms include the following topic headings:\ +\pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0 +\ls1\ilvl0\cf4 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#toc-what-you-expect"}}{\fldrslt \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec4 What you can expect from us}}\cf2 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 , which describes how we provide and develop our services\cb1 \ +\ls1\ilvl0\cf4 \cb3 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#toc-what-we-expect"}}{\fldrslt \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec4 What we expect from you}}\cf2 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 , which establishes certain rules for using our services\cb1 \ +\ls1\ilvl0\cf4 \cb3 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#toc-content"}}{\fldrslt \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec4 Content in Google services}}\cf2 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 , which describes the intellectual property rights to the content that you find in our services \'96 whether that content belongs to you, Google or others\cb1 \ +\ls1\ilvl0\cf4 \cb3 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#toc-problems"}}{\fldrslt \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec4 In case of problems or disagreements}}\cf2 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 , which describes other legal rights that you have, and what to expect in case someone violates these terms.\cb1 \ +\pard\pardeftab720\sa280\partightenfactor0 +\cf2 \cb3 Understanding these terms is important because, by using our services, you\'92re agreeing to these terms.\ +Besides these terms, we also publish a\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/privacy?hl=en-SA&fg=1"}}{\fldrslt \cf4 \strokec4 Privacy Policy}}. Although it\'92s not part of these terms, we encourage you to read it to better understand how you can\'a0{\field{\*\fldinst{HYPERLINK "https://myaccount.google.com/?hl=en_GB"}}{\fldrslt \cf4 \strokec4 update, manage, export and delete your information}}.\ +\pard\pardeftab720\partightenfactor0 + +\f0\b\fs48 \cf2 Terms\ +\pard\pardeftab720\partightenfactor0 + +\f1\b0\fs28 \cf2 \ +\pard\pardeftab720\sa298\partightenfactor0 + +\f0\b\fs36 \cf2 Service provider\ +\pard\pardeftab720\sa280\partightenfactor0 + +\f1\b0\fs28 \cf2 Google\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#footnote-services"}}{\fldrslt \cf4 \strokec4 services}}\'a0are provided by, and you\'92re contracting with:\ +Google LLC\cb1 \uc0\u8232 \cb3 organised under the laws of the State of Delaware, USA, and operating under the laws of the USA\cb1 \uc0\u8232 \u8232 \cb3 1600 Amphitheatre Parkway\cb1 \uc0\u8232 \cb3 Mountain View, California 94043\cb1 \uc0\u8232 \cb3 USA\ +\pard\pardeftab720\partightenfactor0 +\cf2 \ +\pard\pardeftab720\sa298\partightenfactor0 + +\f0\b\fs36 \cf2 Age requirements\ +\pard\pardeftab720\sa280\partightenfactor0 + +\f1\b0\fs28 \cf2 If you\'92re under the\'a0{\field{\*\fldinst{HYPERLINK "https://support.google.com/accounts/answer/1350409?hl=en_GB"}}{\fldrslt \cf4 \strokec4 age required to manage your own Google Account}}, you must have your parent or legal guardian\'92s permission to use a Google Account. Please ask your parent or legal guardian to read these terms with you.\ +If you\'92re a parent or legal guardian, and you allow your child to use the\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#footnote-services"}}{\fldrslt \cf4 \strokec4 services}}, then these terms apply to you and you\'92re responsible for your child\'92s activity on the services.\ +Some Google services have additional age requirements as described in their\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms/service-specific?hl=en-SA&fg=1"}}{\fldrslt \cf4 \strokec4 service-specific additional terms and policies}}.\ +} \ No newline at end of file diff --git a/GoogleSearch/main/static/images/tos_main_illustration.svg b/GoogleSearch/main/static/images/tos_main_illustration.svg new file mode 100644 index 0000000..883e2d6 --- /dev/null +++ b/GoogleSearch/main/static/images/tos_main_illustration.svg @@ -0,0 +1 @@ +scene_password_manager_welcome diff --git a/GoogleSearch/main/templates/main/base.html b/GoogleSearch/main/templates/main/base.html new file mode 100644 index 0000000..d4f7950 --- /dev/null +++ b/GoogleSearch/main/templates/main/base.html @@ -0,0 +1,49 @@ +{% load static %} + + + + + + {% block title %}Google{% endblock %} + + + + + + + + + + +
+ {% block content %}{% endblock %} +
+ + {% block footer %} + + {% endblock %} + + + \ No newline at end of file diff --git a/GoogleSearch/main/templates/main/index.html b/GoogleSearch/main/templates/main/index.html new file mode 100644 index 0000000..32fb345 --- /dev/null +++ b/GoogleSearch/main/templates/main/index.html @@ -0,0 +1,30 @@ +{% extends 'main/base.html' %} +{% load static %} + +{% block content %} +
+ + +
+ + +
+ + +
+
+ +
+ Google offered in: العربية +
+
+{% endblock %} \ No newline at end of file diff --git a/GoogleSearch/main/templates/main/terms.html b/GoogleSearch/main/templates/main/terms.html new file mode 100644 index 0000000..f06f49c --- /dev/null +++ b/GoogleSearch/main/templates/main/terms.html @@ -0,0 +1,37 @@ +{% extends 'main/base.html' %} +{% load static %} + +{% block title %}Privacy & Terms – Google{% endblock %} + +{% block content %} +
+ + Google Terms + +
+

Google Terms of Service

+ +

+ Effective 5 January 2022 | + Archived versions | + Download PDF +

+ +

+ Country version: Saudi Arabia +

+ +

What’s covered in these terms

+ +

+ We know it’s tempting to skip these Terms of Service, but it’s important to establish what you can expect from us as you use Google services, and what we expect from you. +

+ +

+ These Terms of Service reflect the way that Google’s business works, the laws that apply to our company, and certain things that we’ve always believed to be true. As a result, these Terms of Service help define Google’s relationship with you as you interact with our services. For example, these terms include the following topic headings: +

+
+
+{% endblock %} + +{% block footer %}{% endblock %} \ No newline at end of file diff --git a/GoogleSearch/main/tests.py b/GoogleSearch/main/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/GoogleSearch/main/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/GoogleSearch/main/urls.py b/GoogleSearch/main/urls.py new file mode 100644 index 0000000..8c5510c --- /dev/null +++ b/GoogleSearch/main/urls.py @@ -0,0 +1,9 @@ +from django.urls import path +from . import views + +app_name = "main" + +urlpatterns = [ + path('', views.home_view, name="home_view"), + path('terms/', views.terms_view, name="terms_view"), +] \ No newline at end of file diff --git a/GoogleSearch/main/views.py b/GoogleSearch/main/views.py new file mode 100644 index 0000000..39e7f10 --- /dev/null +++ b/GoogleSearch/main/views.py @@ -0,0 +1,7 @@ +from django.shortcuts import render + +def home_view(request): + return render(request, 'main/index.html') + +def terms_view(request): + return render(request, 'main/terms.html') \ No newline at end of file diff --git a/GoogleSearch/manage.py b/GoogleSearch/manage.py new file mode 100644 index 0000000..cad9c4a --- /dev/null +++ b/GoogleSearch/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'GoogleSearch.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() From ca284a9feb97b32c86bf73427f420351549c0bac Mon Sep 17 00:00:00 2001 From: sharifah Date: Mon, 6 Apr 2026 10:05:56 +0300 Subject: [PATCH 2/2] lab --- GoogleSearch/GoogleSearch/settings.py | 10 ++++++---- GoogleSearch/main/templates/main/base.html | 6 +++--- GoogleSearch/main/templates/main/terms.html | 2 -- GoogleSearch/main/views.py | 8 +++++--- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/GoogleSearch/GoogleSearch/settings.py b/GoogleSearch/GoogleSearch/settings.py index 3e1c74a..a22243e 100644 --- a/GoogleSearch/GoogleSearch/settings.py +++ b/GoogleSearch/GoogleSearch/settings.py @@ -6,7 +6,9 @@ SECRET_KEY = 'django-insecure--pjdj6zn+0b323ggl+5w$i)_yi_*66_2s(5*0alr@b6*8$z2^t' + DEBUG = True + ALLOWED_HOSTS = [] @@ -17,7 +19,7 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - 'main', + 'main', ] MIDDLEWARE = [ @@ -35,7 +37,8 @@ TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], + + 'DIRS': [os.path.join(BASE_DIR, 'main', 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ @@ -66,9 +69,8 @@ STATIC_URL = 'static/' - STATICFILES_DIRS = [ - BASE_DIR / "main" / "static", + os.path.join(BASE_DIR, "main", "static"), ] DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' \ No newline at end of file diff --git a/GoogleSearch/main/templates/main/base.html b/GoogleSearch/main/templates/main/base.html index d4f7950..a2d1371 100644 --- a/GoogleSearch/main/templates/main/base.html +++ b/GoogleSearch/main/templates/main/base.html @@ -16,7 +16,7 @@ @@ -24,7 +24,7 @@ {% block content %}{% endblock %} - {% block footer %} + - {% endblock %} + \ No newline at end of file diff --git a/GoogleSearch/main/templates/main/terms.html b/GoogleSearch/main/templates/main/terms.html index f06f49c..ad77939 100644 --- a/GoogleSearch/main/templates/main/terms.html +++ b/GoogleSearch/main/templates/main/terms.html @@ -33,5 +33,3 @@