Django项目搭建

223 阅读5分钟

Django项目搭建

1. 项目下载与依赖安装

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

  • 依赖安装示例

    pip install psycopg2==2.7.1 django==1.10.6
    

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

  • 源码安装

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

    • Linux 或 Mac 下:

      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),切换到该目录:

        D:
        cd django-1.11.8
        python setup.py install
        

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

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

    • Ubuntu:

      sudo apt-get install python-django -y
      
    • Fedora:

      yum install python-django
      

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

    • 检查安装是否成功

    进入 Python shell 后执行:

    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
    

    如需指定端口:

    python manage.py runserver 8001
    

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

    python manage.py runserver 0.0.0.0:8000
    

3.6 清空数据库

  • 命令

    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
    

    目录结构示例:

    mysite/
    ├── manage.py
    └── mysite/
        ├── __init__.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py
    

6.2 创建视图

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

    示例代码:

    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 及以下):

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

    Django 2.0 及以上的写法:

    from django.urls import path
    from mysite.views import hello
    
    urlpatterns = [
        path('hello/', hello, name='hello'),
    ]
    

6.4 启动服务器

  • 命令

    python manage.py runserver
    

    访问

    http://127.0.0.1:8000/hello/
    

    测试视图。


7. 新建 App 与详细示例

7.1 新建 App

  • 命令

    python manage.py startapp learn
    

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

7.2 定义视图函数

  • learn/views.py

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

7.3 配置 App URL

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

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

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),
    ]
    

7.4 示例:实现加法功能

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

    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 中):

    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 中增加:

    def add2(request, a, b):
        c = int(a) + int(b)
        return HttpResponse(str(c))
    

    对应 URL 配置:

    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 中添加:

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

8.2 视图中调用模板

  • 在视图函数中

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

    <!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>
    

    在视图中传递数据:

    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

    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 数据操作示例

  • 创建记录

    # 方法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)
    
  • 查询记录

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

    Person.objects.filter(name="Alice").update(age=31)
    
  • 删除记录

    Person.objects.filter(name="Bob").delete()
    

10. 总结

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

  • 对于 Django 框架的使用,重点在于理解项目和 App 的结构、配置文件设置以及 Django 内置的管理命令。
  • 开发过程中建议多利用 manage.py shelldbshell 来调试数据操作。
  • URL 配置和视图函数的编写应注意包名和导入路径,避免常见的 ImportError。