首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答
筛选
回答情况:
全部无回答回答未采纳
提问时间:
不限一周内一月内三月内一年内
回答标签:
django

如何搭建 Django 网站?

提问2018-10-191.3K
fengge77
设置Django开发环境 开发环境是在本地计算机上安装Django,您可以在将Django应用程序部署到生产环境之前用它们进行开发和测试。Django本身提供的主要工具是一组用于创建和使用Django项目的Python脚本,以及一个可用于测试本地(即在您的计算机上,而不是在外部Web服务器上)的简单开发 Web服务器。 您可以按照腾讯云实验室给出的搭建 Python 的 Django 环境进行分步操作,本指南不再进行赘述。 创建网站 我们将介绍如何创建网站的基本框架,然后您可以对其进行设置,路径选择,模型搭建,视图和模板填充。 创建项目 首先打开命令提示符/终端,确保您在虚拟环境中,导航 到您要存储Django应用程序的位置,并为您的新网站创建一个文件夹(举例:django_projects)。然后使用cd命令进入该文件夹: mkdir django_projects cd django_projects 使用django-admin startproject 命令创建新项目locallibrary(您也可以使用其他命名),然后导航到该文件夹。 django-admin startproject locallibrary cd locallibrary django-admin工具创建文件夹/文件结构,如下所示: locallibrary/ manage.py locallibrary/ __init__.py settings.py urls.py wsgi.py 我们当前的工作目录应如下所示: ../django_projects/locallibrary/ 该locallibrary项目的子文件夹是网站的入口点: init.py是一个空文件,指示Python将此目录视为Python包。 settings.py包含所有的网站设置。这是我们注册我们创建的任何应用程序,静态文件的位置,数据库配置详细信息等的地方。 urls.py定义站点URL到视图的映射。虽然这可能包含所有 url映射代码,但更常见的是将某些映射委托给特定应用程序,稍后您将看到。 wsgi.py 用于帮助您的Django应用程序与Web服务器通信。您可以将其视为样板。 该manage.py脚本用于创建应用程序,与数据库的工作,并开始开发网络服务器。 创建目录应用程序 接下来,运行以下命令来创建将存在于我们的localibrary项目中的目录应用程序(这必须与项目的manage.py在同一文件夹中运行): python3 manage.py startapp catalog 该工具将创建一个新文件夹,并使用文件填充该应用程序的不同部分(下面以粗体显示)。大多数的文件会以其目的来进行有效地命名(例如,意见应存放在views.py,模型存在models.py,测试存在tests.py,管理站点配置是 admin.py,申请注册是apps.py),并含有一些用于处理相关对象的最小样板代码。 更新的项目目录现在应如下所示: locallibrary/ manage.py locallibrary/ catalog/ admin.py apps.py models.py tests.py views.py __init__.py migrations/ 另外我们现在有: 一个迁移的文件夹,用来存放“迁移” -文件允许你修改你的模型自动更新数据库。 init.py - 这里创建的空文件,以便Django / Python将该文件夹识别为Python包, 并允许您在项目的其他部分中使用其对象。 注册目录应用程序 既然已经创建了应用程序,我们必须将它注册到项目中,以便在运行任何工具时将其包含在内(例如,将模型添加到数据库中)。通过将应用程序添加到INSTALLED_APPS项目设置中的列表来注册应用程序 。 打开项目设置文件django_projects / locallibrary / locallibrary / settings.py并找到INSTALLED_APPS 列表的定义。然后在列表末尾添加一个新行,如下面的注释所示。 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'catalog.apps.CatalogConfig', //添加此行 ] 新行指定在 创建应用程序时CatalogConfig在/locallibrary/catalog/apps.py中为您生成的应用程序配置对象()。 指定数据库 这也是您通常指定要用于项目的数据库的点 - 在可能的情况下使用相同的数据库进行开发和生产是有意义的,以避免一些细微的差别。您可以在数据库(Django文档)中找到有关不同选项的信息。 我们将在这个例子中使用SQLite数据库,因为我们不希望在演示数据库上需要大量的并发访问,而且因为它不需要额外的设置!您可以在settings.py中查看此数据库的配置方式(下面还包含更多信息): DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } 因为我们使用的是SQLite,所以我们不需要在此处进行任何进一步的设置。 其他项目设置 settings.py文件也用于配置其他一些设置,但在这一点上,你可能只是想改变TIME_ZONE -这应该是与标准时区信息数据库时区列表相等的字符串(在TZ列在表中包含您想要的值)。将您的TIME_ZONE值更改为适合您所在时区的其中一个字符串,例如: TIME_ZONE = 'Europe/London' 您应该注意的其他两个设置为: SECRET_KEY。这是一个密钥,用作Django网站安全策略的一部分。如果您不在开发环境中保护此代码,则需要在将其放入生产环境时进行修改。 DEBUG。能够让调试日志显示错误,而不是HTTP状态代码响应。在生产环境下应该设置为False,因为调试信息对攻击者很有用,但是现在我们可以将其设置为True。 连接URL映射器 该网站使用项目文件夹中的URL映射文件(urls.py)创建。虽然您可以使用此文件来管理所有URL映射,但更常见的是将映射推迟到关联的应用程序上 。 打开locallibrary / locallibrary / urls.py 并记下说明文本,该文本解释了使用URL映射器的一些方法。 """locallibrary URL Configuration ​ The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/2.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 django.contrib import admin from django.urls import path ​ urlpatterns = [ path('admin/', admin.site.urls), ] URL映射通过urlpatterns变量进行管理,该变量是Python 的函数列表path()。每个path() 函数或将URL模式与特定视图相关联,该模式将在模式匹配时显示,或者与另一个URL模式测试代码列表相关联。该urlpatterns 列表最初定义了一个函数,该函数将所有带有admin /admin.site.urls的URL映射到模块,该模块包含Administration应用程序自己的URL映射定义。 将下面的行添加到文件的底部,以便将新的列表项添加到urlpatterns列表中。这个新项目包括将具有path()模式的请求catalog/ 转发到模块catalog.urls(具有相对URL /catalog/urls.py的文件)。 # Use include() to add paths from the catalog application from django.conf.urls import include from django.urls import path ​ urlpatterns += [ path('catalog/', include('catalog.urls')), ] 现在让我们将我们网站的根URL(即127.0.0.1:8000)重定向到URL 127.0.0.1:8000/catalog/; 这是我们将在这个项目中使用的唯一应用程序。为此,我们将使用一个特殊的视图函数(RedirectView),它将第一个参数作为匹配函数中的/catalog/指定的URL模式path()(在本例中为根URL )重定向到()的新URL 。 将以下行再次添加到文件的底部: #Add URL maps to redirect the base URL to our application from django.views.generic import RedirectView urlpatterns += [ path('', RedirectView.as_view(url='/catalog/')), ] 将路径函数的第一个参数留空。如果您将第一个参数写为'/',Django会在您启动开发服务器时给出以下警告: System check identified some issues: ​ WARNINGS: ?: (urls.W002) Your URL pattern '/' has a route beginning with a '/'. Remove this slash as it is unnecessary. If this pattern is targeted in an include(), ensure the include() pattern has a trailing '/'. Django默认不提供CSS,JavaScript和图像等静态文件,但在创建站点时,开发Web服务器可以这样做。作为此URL映射器的最终添加,您可以通过附加以下行在开发期间启用静态文件。 现在将以下最终块添加到文件的底部: # Use static() to add url mapping to serve static files during development (only) from django.conf import settings from django.conf.urls.static import static ​ urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 最后一步,在目录文件夹中创建一个名为urls.py的文件,并添加以下文本以定义导入的 urlpatterns。这是我们在构建应用程序时添加模式的地方。 from django.urls import path from catalog import views ​ ​ urlpatterns = [ ​ ] 测试网站框架 此时我们有一个完整的框架项目。该我们将对其进行一些测试。 在我们这样做之前,我们应该首先运行数据库迁移。这会更新我们的数据库,包含我们安装的应用程序中的任何模型(并删除一些构建警告)。 运行数据库迁移 Django使用Object-Relational-Mapper(ORM)将Django代码中的模型定义映射到底层数据库使用的数据结构。当我们更改模型定义时,Django会跟踪更改并创建数据库迁移脚本(在/ locallibrary / catalog / migrations /中),以自动迁移数据库中的基础数据结构以匹配模型。 当我们创建网站时,Django会自动添加一些模型供网站的管理部分使用(我们稍后会详细介绍)。运行以下命令为数据库中的这些模型定义表(确保您位于包含manage.py的目录中): python3 manage.py makemigrations python3 manage.py migrate 该makemigrations 命令 为项目中安装的所有应用程序创建(但不应用)迁移(您也可以指定应用程序名称以仅为单个项目运行迁移)。这使您有机会在应用这些迁移之前检查这些迁移的代码 - 当您对Django熟悉后,您可以选择略微调整它们! 该 migrate命令实际上将迁移应用于您的数据库(Django会跟踪哪些已添加到当前数据库)。 运行网站 在开发过程中,您可以先使用开发Web服务器对网站进行测试,然后在本地Web浏览器上进行查看。 通过调用该命令运行开发Web服务器runserver(与manage.py位于同一目录中): python3 manage.py runserver ​ Performing system checks... ​ System check identified no issues (0 silenced). August 15, 2018 - 16:11:26 Django version 2.1, using settings 'locallibrary.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK. 服务器运行后,您可以通过导航到http://127.0.0.1:8000/本地Web浏览器来查看该站点。您应该看到一个如下所示的站点错误页面: 📷 别担心!这个错误页面是正常的,因为我们没有在catalogs.urls模块中定义任何页面/网址(我们在获取网站根目录的URL时将其重定向到)。 此时我们知道Django正在工作!
1人回答了此问题

Django大模型应该怎么去正确使用呢?

谢苏
在 Django 中使用“大模型”(通常指数据量大、计算复杂或涉及机器学习/深度学习模型的场景)需要结合 Django 的特性和系统设计原则,确保性能、可维护性和扩展性。 如果“大模型”指的是 Django 中存储大量数据的模型(如千万级记录的表),需关注查询优化和数据库设计。如果“大模型”涉及复杂计算(如统计、聚合),需避免在请求中直接处理。如果“大模型”指 ML/DL 模型(如 TensorFlow/PyTorch 模型),需注意部署和调用方式。 核心原则是:​​将计算密集型或 IO 密集型操作与 Django 请求解耦​​,保证 Web 层的响应速度。
2人回答了此问题

python项目404报错怎么办?

编辑2024-11-10156
用户11356683
这是nrls.py文件
1人回答了此问题

python编程:从入门到实践 Django的问题 添加topic无法自己命名怎么办?

编辑2023-12-13228
永远保持学徒的心
往下走之后发现是models里缩进的问题,低级错误.
1人回答了此问题

请教:前端vue+后端python-django项目,在Ubuntu下如何搭建部署环境?

编辑2023-10-09196
一凡sir
Ubuntu下的环境类似,安装和配置Nginx,安装Python和pip,安装Django和所需的依赖,迁移数据库和部署代码。
1人回答了此问题

django:找不到页面?

编辑2023-08-18241
一凡sir
注册页面应该访问 127.0.0.1:8000/register/ 呀,你看看是不是登录页面上的注册链接url写错了?
1人回答了此问题

django部署云服务器提示虚拟环境问题?

用户10475151
你好,部署Django到云服务器上需要进行一些配置。你说你已经安装了Django,但是你的服务启动时提示环境问题,这可能是因为你的环境变量没有设置正确。你可以尝试在终端中输入python命令,看看是否可以正常进入Python解释器。如果不能进入,则说明Python环境变量没有设置正确。你可以参考一些教程来设置环境变量。 另外,你需要在云服务器上安装一些必要的软件,例如Nginx、uWSGI等。这些软件可以帮助你将Django应用部署到云服务器上。你可以参考一些教程来进行安装和配置。
1人回答了此问题

Django中的for循环不显示数据库结果?

编辑2022-06-15350
EatRice
您好,customer.html文件中使用到了一个变量customers_list,您需要将这个变量进行预定义再导入到模板中才能正确渲染。 后端给html文件传递数据的两种方式 1.指名道姓 return render(request,'index.html',{'n':n,'f':f}) 2.locals() # 会将当前名称空间中所有的变量名全部传递给html页面return render(request,'index.html',locals()) 因此您的对象写法可能有点问题。 具体用法请参考官方教程:https://docs.djangoproject.com/zh-hans/4.0/topics/templates/ 图片
1人回答了此问题

SQL中带有groupby的聚合查询计算应该怎么转化ORM的语句?

卖女孩的火柴
SELECT course_id,count(user_id) as usercount FROM test_bt4.course_user where is_delete = 0 group by course_id;
1人回答了此问题

Django,使用POST无法触发view中的函数?

编辑2021-12-01363
用户1198622
from rest_framework.decorators import api_view @api_view(['POST']) def AddUserInfo(request) 函数加上api_view装饰器。
1人回答了此问题

同时跑django和vue项目时,cpu/磁盘/内存均飙高?

编辑2021-05-25331
EatRice
单核的处理器跑满频率不是很正常嘛
1人回答了此问题

腾讯云服务器python3.6版本安装mysqlclient一直报错,如何解决?

编辑2021-04-07309
富有想象力的人
yum安装报错是因为需要root用户才可以安装,普通用户不可以,pip安装是因为setup.py包缺失~
1人回答了此问题

Django 环境搭建纠错?

编辑2021-03-22273
EatRice
下载安装python3.x,然后建立python与python3.x的软连接即可
1人回答了此问题

django按照实验步骤,启动后无法访问?

编辑2019-11-261.2K
用户4840811
项目名字一直不成功 这怎么处理 image.png
2人回答了此问题

腾讯云cos 错误代码403 ?

编辑2019-11-072.1K
用户2949429
'allowPrefix' => '*', 后端签名的时候,这个要设置成 “*”,允许所有
2人回答了此问题

为什么centos默认没有pip命令?

编辑2019-09-022.1K
MySQL技术
你应该安装pip3吧 pip3和pip可以共存的。 首先安装epel扩展源:   yum -y install epel-release   更新完成之后,就可安装pip:   yum -y install python-pip   安装完成之后清除cache:   yum clean all   安装epel-release和setuptools   yum makecache   yum install -y python34-setuptools    安装pip3   easy_install-3.4 pip   对安装好的pip进行升级 pip install --upgrade pip   查看pip版本  pip-V
1人回答了此问题

nginx upstream timed out 问题?

编辑2019-04-181.2K
用户3827890
唉。。问题找到了 python3.7和nginx1.12.2版本不兼容。 会直接就没响应
1人回答了此问题

最近在重写django storage 的_save方法,遇到的一些问题,有人指点一下下吗?

编辑2019-04-08520
Richel
是不是把文件读出来, 作为变量传递给save就可以?
1人回答了此问题

你好,请问能将django博客的源码分享一下可以吗?

编辑2018-11-28371
FesonX
这是基于我 Django2.1 开发的博客项目, https://github.com/FesonX/myBlog 适合练手,有兴趣可以试试
2人回答了此问题

前端请求写入后端某个文件,apache给错误permission deny?

提问2018-06-27273
羽阁丶
权限问题,需要修改配置文件php.ini
1人回答了此问题
Hi~
今天想聊点什么呢?
近期活跃用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档