Apa yang diharapkan daripada artikel ini?
Baiklah, mari mulakan pengekodan! ini adalah artikel pengekodan pertama selepas memperkenalkan idea Alive Diary dan membuktikan Gemini boleh menjadi jiwa, kami akan mula mengekod Backend dengan Django.
Untuk memastikan perkara itu teratur, saya akan membincangkan projek itu melalui berbilang artikel, jadi artikel ini
- akan meliputi proses persediaan projek.
- akan membentangkan perpustakaan yang digunakan dan sebab kami menggunakannya.
- akan mencipta apl dan menerangkan logik di sebaliknya.
Saya akan cuba mengupas sebanyak mungkin butiran tanpa membosankan anda, tetapi saya masih mengharapkan anda membiasakan diri dengan beberapa aspek Python dan Django.
versi akhir kod sumber boleh didapati di https://github.com/saad4software/alive-diary-backend
Pesanan siri
Semak artikel sebelum ini jika berminat!
- Projek AI dari Scratch, The Idea, Alive Diary
- Buktikan ia boleh dilaksanakan dengan Google AI Studio
- Persediaan Projek API Django (Anda di sini ?)
Mulakan Projek!
Selepas memasang Python, dan menyediakan persekitaran maya yang sesuai dengan sistem pengendalian anda. pastikan anda memasang perpustakaan tersebut
Django==4.2.16 # it is django itself! django-cors-headers==4.4.0 # avoid cors-headers issues django-filter==24.3 # easily filter text fields djangorestframework==3.15.2 # rest framework! djangorestframework-simplejwt==5.3.1 # JWT token pillow==10.4.0 # for images python-dotenv==1.0.1 # load config from .env file google-generativeai==0.7.2 # google api ipython==8.18.1 # process gemini responses django-parler==2.3 # multiple languages support django-parler-rest==2.2 # multi-language with restframework
keperluan.txt
Ia tidak semestinya versi yang sama, bergantung pada versi Python anda, anda boleh memasang setiap satu secara manual menggunakan
pip pasang django
atau buat fail keperluan dan gunakan fail lama yang sama
pip install -r requirements.txt
Dengan django dan perpustakaan dipasang, kami boleh memulakan projek kami
django-admin startproject alive_diary cd alive_diary python manage.py startapp app_account python manage.py startapp app_admin python manage.py startapp app_main
Kami mencipta projek yang dipanggil "alive_diary" dan di dalamnya, kami mencipta tiga aplikasi,
- app_account: untuk mengurus data akaun penting pengguna, pendaftaran, log masuk, menukar kata laluan, mengesahkan e-mel akaun dan tanggungjawab yang serupa.
- app_admin: untuk tugas berkaitan pentadbir, terutamanya mengurus pengguna untuk apl mudah ini
- app_main: untuk apl utama.
Kami akan mengekalkan pergantungan minimum antara apl Django untuk menjadikannya boleh digunakan semula dalam projek lain.
tetapan
Ringkasnya, ini ialah fail tetapan terakhir, mari kita berjalan dengan pantas melaluinya
import os from datetime import timedelta from pathlib import Path from dotenv import load_dotenv
Kami telah menggunakan timedelta daripada pakej datetime untuk menetapkan JWT seumur hidup, os dan load_dotenv untuk memuatkan pembolehubah daripada fail .env.
load_dotenv()
muat pembolehubah daripada fail .env
BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = os.getenv("SECRET_KEY") DEBUG = True ALLOWED_HOSTS = ['*']
menambah '*' untuk ALLOWED_HOSTS untuk membenarkan sambungan dari mana-mana IP. os.getenv dapatkan nilai kunci daripada fail .env.
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'corsheaders', 'rest_framework', 'django_filters', 'app_account', 'app_admin', 'app_main', ]
Menambahkan corsheaders, rest_framework dan apl django_filters serta tiga apl kami, app_account, app_admin dan app_main.
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
Jangan lupa untuk menambah perkakas tengah CorsMiddleware sebelum CommonMiddleware
Django==4.2.16 # it is django itself! django-cors-headers==4.4.0 # avoid cors-headers issues django-filter==24.3 # easily filter text fields djangorestframework==3.15.2 # rest framework! djangorestframework-simplejwt==5.3.1 # JWT token pillow==10.4.0 # for images python-dotenv==1.0.1 # load config from .env file google-generativeai==0.7.2 # google api ipython==8.18.1 # process gemini responses django-parler==2.3 # multiple languages support django-parler-rest==2.2 # multi-language with restframework
menambahkan konfigurasi pengepala cors pada fail tetapan
django-admin startproject alive_diary cd alive_diary python manage.py startapp app_account python manage.py startapp app_admin python manage.py startapp app_main
Gunakan Pengesahan JWT Mudah sebagai kelas pengesahan lalai untuk perpustakaan rangka kerja rehat.
import os from datetime import timedelta from pathlib import Path from dotenv import load_dotenv
tukar kelas pengguna lalai kepada kelas tersuai daripada app_account, kami belum mencipta model ini lagi.
load_dotenv()
Menambahkan bahasa yang disokong dan tetapkan folder untuk fail dan statik
BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = os.getenv("SECRET_KEY") DEBUG = True ALLOWED_HOSTS = ['*']
Tetapan e-mel, untuk proses pengesahan e-mel. kami sedang memuatkannya daripada fail .env.
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'corsheaders', 'rest_framework', 'django_filters', 'app_account', 'app_admin', 'app_main', ]
Tetapan token JWT yang mudah, kami menetapkan jangka hayat token akses "ACCESS_TOKEN_LIFETIME" menjadi 8 jam dan muat semula token sepanjang hayat "REFRESH_TOKEN_LIFETIME" menjadi 5 hari. kami sedang memutarkan token muat semula (menghantar token muat semula baharu dengan setiap permintaan token muat semula) "ROTATE_REFRESH_TOKENS" dan menggunakan awalan pengepala 'Pembawa' untuk pengesahan "AUTH_HEADER_TYPES".
Fail persekitaran
Vars yang digunakan dalam fail .env hendaklah
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
tetapkan nilai mengikut projek anda, anda boleh menggunakan kunci rahsia django yang dijana untuk Kunci Rahsia, dapatkan kunci API Google Gemini daripada studio AI dan gunakan akaun e-mel anda untuk e-mel pengesahan.
menggunakan akaun google untuk menghantar e-mel adalah mungkin, tetapi tidak disyorkan. tetapan hendaklah seperti
ROOT_URLCONF = 'alive_diary.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 = 'alive_diary.wsgi.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } 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', }, ] LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True STATIC_URL = '/static/' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' # CORS HEADERS CORS_ORIGIN_ALLOW_ALL = True CORS_ALLOW_CREDENTIALS = True
dan pengguna harus mendayakan "Apl yang kurang selamat" untuk mengakses akaun gmail. Bagaimanapun, kita boleh membina semuanya dahulu, dan bimbang tentang perkara ini kemudian. abaikan sahaja bahagian pengesahan e-mel buat masa ini.
buat kesimpulan
Hanya untuk dapat menjalankan projek dan menyelesaikan artikel ini, mari buat model pengguna dalam app_account/models.py
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework_simplejwt.authentication.JWTAuthentication', ], }
semudah itu! (kami akan mengusahakannya pada artikel seterusnya) mari berhijrah dan berhijrah
AUTH_USER_MODEL = 'app_account.User'
jika semuanya berjalan lancar, anda sepatutnya dapat menjalankan projek sekarang dengan
LANGUAGES = [ ('en', 'English'), ('ar', 'Arabic') ] STATICFILES_DIRS = [os.path.join(BASE_DIR, "app_main", "site_static")] STATIC_ROOT = os.path.join(BASE_DIR, "app_main", "static") MEDIA_ROOT = os.path.join(BASE_DIR, "app_main", "media") MEDIA_URL = "/app_main/media/"
Sila kongsi sebarang isu yang anda hadapi dengan saya. Kami bersedia untuk mula bekerja pada apl projek sekarang!
Dan itu sahaja!
artikel seterusnya hendaklah merangkumi app_account, apl pengurusan pengguna, ia termasuk pengurusan pengguna, log masuk, daftar, tukar kata laluan, terlupa kata laluan, pengesahan akaun dan tindakan berkaitan pengguna lain yang kami perlukan dalam kebanyakan apl.
Nantikan ?
Atas ialah kandungan terperinci Persediaan Projek API Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

ArraysareBetterforelement-wiseoperationsduetofasteraccessandoptimizedImplementations.1) arrayshavecontiguousmemoryfordirectaccess, enhancingperformance.2) listsareflexibleButslowerduetopotentiahyiLys.3)

Operasi matematik keseluruhan array di Numpy dapat dilaksanakan dengan cekap melalui operasi vektor. 1) Gunakan pengendali mudah seperti tambahan (ARR 2) untuk melaksanakan operasi pada tatasusunan. 2) Numpy menggunakan perpustakaan bahasa C yang mendasari, yang meningkatkan kelajuan pengkomputeran. 3) Anda boleh melakukan operasi kompleks seperti pendaraban, pembahagian, dan eksponen. 4) Perhatikan operasi penyiaran untuk memastikan bahawa bentuk array bersesuaian. 5) Menggunakan fungsi numpy seperti np.sum () dapat meningkatkan prestasi dengan ketara.

Di Python, terdapat dua kaedah utama untuk memasukkan elemen ke dalam senarai: 1) Menggunakan kaedah memasukkan (indeks, nilai), anda boleh memasukkan elemen pada indeks yang ditentukan, tetapi memasukkan pada permulaan senarai besar tidak cekap; 2) Menggunakan kaedah append (nilai), tambahkan elemen pada akhir senarai, yang sangat berkesan. Untuk senarai besar, disarankan untuk menggunakan append () atau pertimbangkan menggunakan array deque atau numpy untuk mengoptimumkan prestasi.

TomakeapythonscriptexecutableonbothunixandWindows: 1) addashebangline (#!/Usr/bin/envpython3) andusechmod xtomakeitexecutableonunix.2) onwindows, memastikanpythonisinstalledandAssociateWith.pyhiles, runeAtAsdiStAnToSoSoSoSoSoSoSoSoSoSoSoSoSoSoSoSoSoSoSoSoSoSoSoSo.

Apabila menghadapi kesilapan "commandnotfound", perkara -perkara berikut harus diperiksa: 1. Sahkan bahawa skrip ada dan jalannya betul; 2. Semak kebenaran fail, dan gunakan ChMod untuk menambah kebenaran pelaksanaan jika perlu; 3. Pastikan penterjemah skrip dipasang dan di jalan; 4. Sahkan bahawa garis shebang pada permulaan skrip adalah betul. Melakukannya dengan berkesan dapat menyelesaikan masalah operasi skrip dan memastikan proses pengekodan lancar.

ArraysareGenerallymorememememory-efficientthanlistsforstoringnumericaldataduetotheirfixed-sizenatureanddirectmemoryaccess.1) arraysstoreelementsinacontiguousblock, reducingoverheadfrointersormetadata.2)

ToConvertapythonlisttoanarray, usetheArraymodule: 1) importThearraymodule, 2) createalist, 3) UseArray (typecode, list) toConvertit, spesifyingthetypecodelike'i'forintegers.ThisconversionOptimizesMogenhomogeneousdata, enHomerMogeneShomogeneousdata, enHomerMogeneousdata, enhomoMogenerDataShomaSdata, enhomoMogenhomogeneousdata,

Senarai Python boleh menyimpan pelbagai jenis data. Senarai contoh mengandungi integer, rentetan, nombor titik terapung, boolean, senarai bersarang, dan kamus. Senarai fleksibiliti adalah berharga dalam pemprosesan data dan prototaip, tetapi ia perlu digunakan dengan berhati -hati untuk memastikan kebolehbacaan dan pemeliharaan kod.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
