Django项目搭建

Django项目搭建

1. 项目下载与依赖安装

  • 常用框架 除了使用轻量级框架如 Bottle 或 Flask 实现接口外,Django 也是常用的后端框架。

  • 依赖安装示例

    ini 复制代码
    pip install psycopg2==2.7.1 django==1.10.6

    (注意:不同项目版本要求可能不同,确保包名和版本与项目需求匹配)

  • 源码安装

    • 下载地址: Django 官方下载页面 下载如 django-1.11.8.tar.gz 后:

    • Linux 或 Mac 下:

      arduino 复制代码
      tar -xvf django-1.11.8.tar.gz
      cd django-1.11.8
      sudo python setup.py install
    • Windows 下:

      1. 使用解压软件解压源码包到一个目录(例如 D:\django-1.11.8)。

      2. 打开命令行(在"开始"菜单中输入 cmd),切换到该目录:

        arduino 复制代码
        D:
        cd django-1.11.8
        python setup.py install

      如果出现 "python 不是内部或外部命令" 的提示,则需检查 Python 是否正确安装以及 PATH 是否配置正确。

    • Linux 系统自带源安装(不推荐)

    • Ubuntu:

      arduino 复制代码
      sudo apt-get install python-django -y
    • Fedora:

      复制代码
      yum install python-django

      注:自带源安装的版本通常较旧,建议使用 pip 安装最新版。

    • 检查安装是否成功

    进入 Python shell 后执行:

    go 复制代码
    import django
    print(django.VERSION)      # 输出类似:(1, 11, 8, 'final', 0)
    print(django.get_version())  # 输出 '1.11.8'

    如果能正常显示版本号,则说明 Django 安装成功。


2. 导入项目与 SDK 配置

  • Django 项目基本结构

    • urls.py 定义 URL 路由,决定请求映射到哪个视图函数或类。
    • views.py 处理请求,返回 HttpResponse 或渲染模板,生成动态页面内容。
    • models.py 定义数据模型,与数据库表对应,用于数据存取。
    • forms.py 定义表单类,用于数据验证和表单展示(非必需)。
    • templates/ 存放 HTML 模板,供 views 渲染生成最终页面。
    • admin.py 自动生成后台管理界面,极大简化后台管理开发。
    • settings.py 配置项目参数,如数据库、静态文件路径、DEBUG 开关等。
  • 导入项目 将项目导入 IDEA 或其它 IDE 后,在 "File --> Project Structure" 中选择正确的 SDK。


3. Django 基本命令与项目创建

3.1 IDEA 中创建 Django 项目

新建项目步骤

  1. 在 IDEA 中依次选择:File -> New -> Project
  2. 在新建项目对话框中选择 Python 项目,配置 Project SDK(确保已安装 Python),并勾选 Django 选项。
  3. 在下方填写 Template folder 路径(例如:C:\Python27\django-master\django\template),点击 Next
  4. 填写项目名称、项目位置、Module Name、Content Root 和 Module File Location。
  5. 完成后 IDEA 会自动生成 Django 项目的基本结构,并在项目根目录生成如 manage.py 等文件。

配置 Django 项目环境

进入 File -> Project Structure -> Facets 中找到 Django 配置项,确保:

  • Django project root:指向整个项目的根目录。

  • Settings :选择项目中的 settings.py 文件。

  • Manage script :指向 manage.py 文件。

3.2 项目目录新建 Django 项目

  • 命令

    复制代码
    django-admin.py startproject project_name

    注意:在 Windows 上如果出现问题,可以使用 django-admin 替代 django-admin.py

    • project_name 必须是合法的 Python 包名(不能包含特殊字符或以数字开头)。

3.3 新建应用(App)

  • 进入项目目录后执行

    复制代码
    python manage.py startapp app_name

    同样,app_name 也应为合法的 Python 包名(如 blog、news、aboutus)。

3.4 数据库表的创建与变更

  • Django 1.7 及以上

    复制代码
    python manage.py makemigrations
    python manage.py migrate
  • Django 1.6 及以下

    复制代码
    python manage.py syncdb

    注:对于已有 models 的修改,早期版本建议使用第三方工具 south 进行数据库迁移。

3.5 启动开发服务器

  • 运行命令

    复制代码
    python manage.py runserver

    如需指定端口:

    yaml 复制代码
    python manage.py runserver 8001

    或监听所有 IP(便于局域网调试):

    复制代码
    python manage.py runserver 0.0.0.0:8000

3.6 清空数据库

  • 命令

    arduino 复制代码
    python manage.py flush

    此命令会询问确认后将所有数据清空,只保留空表。

3.7 创建超级管理员

  • 命令

    复制代码
    python manage.py createsuperuser

    按提示输入用户名、密码(邮箱可留空)。


4. 数据导出与导入

  • 导出数据

    复制代码
    python manage.py dumpdata appname > appname.json
  • 导入数据

    复制代码
    python manage.py loaddata appname.json

5. Django 项目环境终端

  • 启动 Shell

    复制代码
    python manage.py shell

    如果安装了 bpythonipython,会自动启用更友好的交互界面,便于测试 models 等代码。

  • 数据库命令行

    复制代码
    python manage.py dbshell

    Django 会自动根据 settings.py 中的数据库配置进入相应的数据库命令行环境(例如 MySQL、PostgreSQL)。


6. URL 配置与视图(Views)创建

6.1 新建项目示例

  • 创建项目

    复制代码
    django-admin startproject mysite

    目录结构示例:

    markdown 复制代码
    mysite/
    ├── manage.py
    └── mysite/
        ├── __init__.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py

6.2 创建视图

  • 在项目根目录下新建 views.py

    示例代码:

    python 复制代码
    from django.http import HttpResponse
    
    def hello(request):
        return HttpResponse("<html><body><h1>Hello world</h1></body></html>")

6.3 配置 URL

  • 修改 mysite/urls.py

    示例(Django 1.7 及以下):

    python 复制代码
    from django.conf.urls import patterns, url
    from mysite.views import hello  # 根据实际包名修改
    
    urlpatterns = patterns('',
        url(r'^hello/$', hello),
    )

    Django 2.0 及以上的写法:

    javascript 复制代码
    from django.urls import path
    from mysite.views import hello
    
    urlpatterns = [
        path('hello/', hello, name='hello'),
    ]

6.4 启动服务器

  • 命令

    复制代码
    python manage.py runserver

    访问

    arduino 复制代码
    http://127.0.0.1:8000/hello/

    测试视图。


7. 新建 App 与详细示例

7.1 新建 App

  • 命令

    复制代码
    python manage.py startapp learn

    目录结构将生成 learn 文件夹,其中包含 models.pyviews.py 等。

7.2 定义视图函数

  • learn/views.py

    python 复制代码
    # coding:utf-8
    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse(u"欢迎光临")

7.3 配置 App URL

  • 在主 URL 配置中(例如 mysite/urls.py

    php 复制代码
    from django.urls import path, include
    
    urlpatterns = [
        path('', include('learn.urls')),  # 在learn目录下建立urls.py
        path('admin/', admin.site.urls),
    ]
  • learn/urls.py(需要新建)

    javascript 复制代码
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),
    ]

7.4 示例:实现加法功能

  • 使用 GET 参数的方式calc/views.py 中:

    python 复制代码
    from django.http import HttpResponse
    
    def add(request):
        a = request.GET.get('a', '0')
        b = request.GET.get('b', '0')
        c = int(a) + int(b)
        return HttpResponse(str(c))

    对应 URL 配置(在 zqxt_views/urls.py 中):

    javascript 复制代码
    from django.urls import path
    from calc import views as calc_views
    
    urlpatterns = [
        path('add/', calc_views.add, name='add'),
    ]

    访问 http://127.0.0.1:8000/add/?a=4&b=5 得到结果。

  • 采用 URL 参数方式calc/views.py 中增加:

    css 复制代码
    def add2(request, a, b):
        c = int(a) + int(b)
        return HttpResponse(str(c))

    对应 URL 配置:

    python 复制代码
    from django.urls import re_path
    from calc import views as calc_views
    
    urlpatterns = [
        re_path(r'^add/(\d+)/(\d+)/$', calc_views.add2, name='add2'),
    ]

    访问 http://127.0.0.1:8000/add/4/5/ 得到相同效果。


8. 模板使用

8.1 配置模板目录

  • 在项目目录下创建 templates 文件夹然后在 settings.py 中添加:

    ini 复制代码
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    # 默认的context_processors...
                ],
            },
        },
    ]

8.2 视图中调用模板

  • 在视图函数中

    python 复制代码
    from django.shortcuts import render
    
    def index(request):
        return render(request, 'home.html')
  • 示例模板 home.html

    xml 复制代码
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>首页</title>
    </head>
    <body>
        <h1>{{ string }}</h1>
        <ul>
            {% for item in TutorialList %}
            <li>{{ item }}</li>
            {% endfor %}
        </ul>
    </body>
    </html>

    在视图中传递数据:

    python 复制代码
    def home(request):
        context = {
            'string': u"我在自强学堂学习Django,用它来建网站",
            'TutorialList': ["HTML", "CSS", "jQuery", "Python", "Django"]
        }
        return render(request, 'home.html', context)

9. Django 模型与数据库操作

9.1 定义模型

  • people/models.py

    python 复制代码
    from django.db import models
    
    class Person(models.Model):
        name = models.CharField(max_length=30)
        age = models.IntegerField()
    
        def __str__(self):
            return self.name

9.2 创建数据表

  • 在项目目录下执行

    复制代码
    python manage.py makemigrations
    python manage.py migrate

9.3 数据操作示例

  • 创建记录

    ini 复制代码
    # 方法1:直接创建并保存
    p = Person(name="Alice", age=30)
    p.save()
    
    # 方法2:使用 create
    Person.objects.create(name="Bob", age=25)
    
    # 方法3:防止重复创建
    Person.objects.get_or_create(name="Charlie", age=28)
  • 查询记录

    ini 复制代码
    # 查询所有
    persons = Person.objects.all()
    
    # 根据条件过滤
    persons = Person.objects.filter(name__icontains="a")
  • 更新记录

    ini 复制代码
    Person.objects.filter(name="Alice").update(age=31)
  • 删除记录

    ini 复制代码
    Person.objects.filter(name="Bob").delete()

10. 总结

以上内容提供了从项目创建、应用构建到数据库操作、模板使用以及 URL 和视图配置的详细步骤。

  • 对于 Django 框架的使用,重点在于理解项目和 App 的结构、配置文件设置以及 Django 内置的管理命令。
  • 开发过程中建议多利用 manage.py shelldbshell 来调试数据操作。
  • URL 配置和视图函数的编写应注意包名和导入路径,避免常见的 ImportError。
相关推荐
小王子10243 小时前
Django 实战:Celery 异步任务从环境搭建到调用全掌握
django·celery
Q_Q51100828515 小时前
python的婚纱影楼管理系统
开发语言·spring boot·python·django·flask·node.js·php
暴走的海鸽1 天前
存储库模式赋能 Django:让你的代码不那么业余,更具生命力
python·设计模式·django
-dzk-1 天前
【Flask】基础入门
后端·python·pycharm·django·flask·conda·pip
noravinsc1 天前
django queryset 去重
数据库·django·sqlite
学不会就看2 天前
Django--02模型和管理站点
数据库·oracle·django
哈里谢顿2 天前
Django博客项目集成Celery实现定时心跳监控系统
django
5172 天前
django中如何使用Django REST Framework
后端·python·django
哈里谢顿2 天前
django中编写一个可执行脚本
django