从这篇文章中可以期待什么?
好吧,让我们开始编码吧!这是介绍 Alive Diary 的想法并证明 Gemini 可以成为灵魂之后的第一篇编码文章,我们将开始使用 Django 编写后端。
为了保持秩序,我将通过多篇文章来讨论该项目,所以这篇文章
- 将涵盖项目设置过程。
- 将展示所使用的库以及我们使用它们的原因。
- 将创建应用程序并解释其背后的逻辑。
我会尽力介绍尽可能多的细节,以免让您感到无聊,但我仍然希望您熟悉 Python 和 Django 的某些方面。
最终版本的源代码可以在https://github.com/saad4software/alive-diary-backend
系列订购
感兴趣的话可以查看之前的文章!
- 从头开始的人工智能项目、创意、Alive 日记
- 用 Google AI Studio 证明它是可行的
- Django API 项目设置(你在这里?)
启动项目!
安装Python并设置适合您操作系统的虚拟环境后。确保安装这些库
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
需求.txt
但不一定是相同的版本,根据您的 Python 版本,您可以使用
手动安装每个版本pip 安装 django
或者创建需求文件并使用相同的旧
pip install -r requests.txt
安装了 django 和库后,我们就可以开始我们的项目了
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
我们创建了一个名为“alive_diary”的项目,并在其中创建了三个应用程序,
- app_account:用于管理用户的基本帐户数据、注册、登录、更改密码、验证帐户电子邮件以及类似职责。
- app_admin:用于与管理相关的任务,主要管理这个简单应用程序的用户
- app_main:用于主应用程序。
我们将在 Django 应用程序之间保持最小的依赖关系,以使它们可以在其他项目中重用。
设置
简而言之,这是最终的设置文件,让我们快速浏览一下它
import os from datetime import timedelta from pathlib import Path from dotenv import load_dotenv
我们使用 datetime 包中的 timedelta 来设置 JWT 生命周期,使用 os 和 load_dotenv 从 .env 文件加载变量。
load_dotenv()
从 .env 文件加载变量
BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = os.getenv("SECRET_KEY") DEBUG = True ALLOWED_HOSTS = ['*']
为 ALLOWED_HOSTS 添加了“*”以允许来自任何 IP 的连接。 os.getenv 从 .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', ]
添加了 corsheaders、rest_framework 和 django_filters 应用程序,以及我们的三个应用程序:app_account、app_admin 和 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', ]
不要忘记在 CommonMiddleware 之前添加 CorsMiddleware 中间件
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
将 cors headers 配置添加到设置文件
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
使用简单的 JWT 身份验证作为 Rest 框架库的默认身份验证类。
import os from datetime import timedelta from pathlib import Path from dotenv import load_dotenv
将默认用户类别从 app_account 更改为自定义用户类别,我们还没有创建此模型。
load_dotenv()
添加了支持的语言,并设置文件和静态的文件夹
BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = os.getenv("SECRET_KEY") DEBUG = True ALLOWED_HOSTS = ['*']
电子邮件设置,用于电子邮件验证过程。我们正在从 .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', ]
简单的 JWT 令牌设置,我们将访问令牌“ACCESS_TOKEN_LIFETIME”的生命周期设置为 8 小时,刷新令牌生命周期“REFRESH_TOKEN_LIFETIME”设置为 5 天。我们正在轮换刷新令牌(通过每个刷新令牌请求发送新的刷新令牌)“ROTATE_REFRESH_TOKENS”,并使用“Bearer”标头前缀进行身份验证“AUTH_HEADER_TYPES”。
环境文件
.env 文件中使用的变量应该是
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', ]
根据您的项目设置值,您可以使用生成的 django 密钥作为 Secret Key,从 AI studio 获取 Google Gemini API 密钥,并使用您的电子邮件帐户发送验证电子邮件。
使用谷歌帐户发送电子邮件是可能的,但不推荐。设置应该像
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
并且用户应启用“不太安全的应用程序”来访问 gmail 帐户。不管怎样,我们可以先把整个东西建好,然后再担心这个。暂时忽略电子邮件验证部分。
结论
为了能够运行项目并完成本文,让我们在 app_account/models.py 中创建一个用户模型
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework_simplejwt.authentication.JWTAuthentication', ], }
就这么简单! (我们将在下一篇文章中解决这个问题)让我们进行迁移并迁移
AUTH_USER_MODEL = 'app_account.User'
如果一切顺利,您现在应该可以运行该项目了
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/"
请与我分享您遇到的任何问题。我们现在准备开始开发项目应用程序!
就是这样!
下一篇文章将介绍app_account,用户管理应用程序,它包括用户管理、登录、注册、更改密码、忘记密码、帐户验证以及我们在大多数应用程序中需要的其他用户相关操作。
敬请期待?
以上是Django API 项目设置的详细内容。更多信息请关注PHP中文网其他相关文章!

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

Python的statistics模块提供强大的数据统计分析功能,帮助我们快速理解数据整体特征,例如生物统计学和商业分析等领域。无需逐个查看数据点,只需查看均值或方差等统计量,即可发现原始数据中可能被忽略的趋势和特征,并更轻松、有效地比较大型数据集。 本教程将介绍如何计算平均值和衡量数据集的离散程度。除非另有说明,本模块中的所有函数都支持使用mean()函数计算平均值,而非简单的求和平均。 也可使用浮点数。 import random import statistics from fracti

Python 对象的序列化和反序列化是任何非平凡程序的关键方面。如果您将某些内容保存到 Python 文件中,如果您读取配置文件,或者如果您响应 HTTP 请求,您都会进行对象序列化和反序列化。 从某种意义上说,序列化和反序列化是世界上最无聊的事情。谁会在乎所有这些格式和协议?您想持久化或流式传输一些 Python 对象,并在以后完整地取回它们。 这是一种在概念层面上看待世界的好方法。但是,在实际层面上,您选择的序列化方案、格式或协议可能会决定程序运行的速度、安全性、维护状态的自由度以及与其他系

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

本文讨论了诸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和请求等流行的Python库,并详细介绍了它们在科学计算,数据分析,可视化,机器学习,网络开发和H中的用途

该教程建立在先前对美丽汤的介绍基础上,重点是简单的树导航之外的DOM操纵。 我们将探索有效的搜索方法和技术,以修改HTML结构。 一种常见的DOM搜索方法是EX

本文指导Python开发人员构建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等库详细介绍,强调输入/输出处理,并促进用户友好的设计模式,以提高CLI可用性。

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

禅工作室 13.0.1
功能强大的PHP集成开发环境