Django框架基础(上)---创建、视图、路由

本文详细介绍在Windows环境下使用PyCharm创建Django项目的过程,包括项目结构解析、子应用的创建与注册、视图与路由的定义,以及Django的调试模式特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django框架基础

windows下利用Pycharm创建一个Django框架

pycharm创建Django框架

目录说明

在这里插入图片描述

  • 外层的Django基础/根目录仅仅是项目的一个容器。 它的名字与Django无关;可以将其重命名为你喜欢的任何内容。
  • manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互。 你可以在django-admin和manage.py中读到关于manage.py的所有细节。
  • 内层的Django基础/目录是你的项目的真正的Python包。 它是你导入任何东西时将需要使用的Python包的名字(例如 mysite.urls)。
  • Django基础/init.py:一个空文件,它告诉Python这个目录应该被看做一个Python包。 如果你是Python初学者,请在官方Python文档中阅读关于python包的更多内容。
  • Django基础/settings.py:该Django 项目的设置/配置。 Django settings 将告诉你这些设置如何工作。
  • Django基础/urls.py:此Django项目的URL声明;Django驱动的网站的“目录”。 你可以在URL dispatcher 中阅读到更多关于URL的内容。
  • Django基础/wsgi.py:用于你的项目的与WSGI兼容的Web服务器入口。 更多细节请参见如何使用WSGI部署。

给manage.py设置参数 启动服务器

可以不写IP和端口,默认IP是127.0.0.1,默认端口为8000

在这里插入图片描述
在这里插入图片描述

再次运行manage.py文件

在这里插入图片描述
显示如上图所示,显示服务器开启成功,在网页里输入红框里面地址。
在这里插入图片描述
如果有上面显示,就证明服务器正常
django默认工作在调式Debug模式下,如果增加、修改、删除文件,服务器会自动重启。

一:创建子应用

1. 创建

      在Pycharm中,Django的子应用可以用Terminal中的命令来创建
      python manage.py startapp 子应用名称
在这里插入图片描述

2.注册安装子应用

创建出来的子应用目录文件虽然被放到了工程项目目录中,但是django工程并不能立即直接使用该子应用,需要注册安装后才能使用。

在工程配置文件settings.py中,INSTALLED_APPS项保存了工程中已经注册安装的子应用,初始工程中的INSTALLED_APPS如下

例如,将刚创建的users子应用添加到工程中,可在INSTALLED_APPS列表中添加’users.apps.UsersConfig’

注意:一定是字符串格式,里面是列表,所以要用逗号隔开

# 是django工程注册的应用包括admin模块、用户认真auth模块、sessions模块等,获取了一个字符串的列表数据
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 将刚创建的users子应用添加到工程中
    'users.apps.UsersConfig'
]

二:创建视图

1. 创建:

      打开刚创建的users模块,在views.py中编写视图代码。

from django.shortcuts import render
from django.http import HttpResponse
from django.views import View

# Create your views here.


# 简单的视图
def index(request):
    '''
    index视图
    :param request:每个视图函数都使用HttpRequest对象作为第一个参数,并且通常称之为request。
    :return:这个视图会返回一个HttpResponse对象,其中包含生成的响应。 每个视图函数都负责返回一个HttpResponse对象。 (有例外,我们接下来会讲。)
    '''
    return HttpResponse("hello the world!")


# 定义视图类
class RegisterView(View):
    '''类视图,处理注册'''

    def get(self, request):
        '''处理get请求,返回页面'''
        return render(request, 'register.html')

    def post(self, request):
        """处理POST请求,实现注册逻辑"""
        return HttpResponse('这里实现注册逻辑')

'''
类视图的好处:
    1.代码可读性好
    2.类视图相对于函数视图有更高的复用性, 如果其他地方需要用到某个类视图的某个特定逻辑,直接继承该类视图即可
'''

2. 定义路由URL

      1) 在子应用中新建一个urls.py文件用于保存该应用的路由。
      在这里插入图片描述
      2) 在users/urls.py文件中定义路由信息。

from django.conf.urls import url
from . import views

# urlpatterns是被django自动识别的路由列表变量
urlpatterns = [
    # 每个路由信息都需要使用url函数来构造
    # url(路径, 视图)
    url(r'^index$', views.index),
    # 类视图配置路由时,使用类视图的as_view()方法来添加。可以起名,防止url重复导致覆盖
    url(r'^register/$', views.RegisterView.as_view(), name='register'),

]

      3) 在工程总路由demo/urls.py中添加子应用的路由数据。

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    # django默认包含的
    url(r'^admin/', admin.site.urls),
    
    # 添加
    url(r'^users/', include('users.urls')),
]

      4) 启动运行
      在浏览器中输入网址127.0.0.1:8000/users/index/ 可看到返回的信息
      在这里插入图片描述
      在这里插入图片描述

三:路由说明

在这里插入图片描述

1. 路由定义位置

Django的主要路由信息定义在工程同名目录下的urls.py文件中,该文件是Django解析路由的入口。

每个子应用为了保持相对独立,可以在各个子应用中定义属于自己的urls.py来保存该应用的路由。然后用主路由文件包含各应用的子路由数据。

除了上述方式外,也可将工程的全部路由信息都定义在主路由文件中,子应用不再设置urls.py。但是这种方法不适用于团队合作,如果路由重复,只会先调用第一个路由,造成错误。

2. 路由解析顺序

Django在接收到一个请求时,从主路由文件中的urlpatterns列表中以由上至下的顺序查找对应路由规则,如果发现规则为include包含,则再进入被包含的urls中的urlpatterns列表由上至下进行查询。

值得关注的由上至下的顺序,有可能会使上面的路由屏蔽掉下面的路由,带来非预期结果

3. 路由命名与reverse反解析(逆向)

3.1 路由命名
在定义路由的时候,可以为路由命名,方便查找特定视图的具体路径信息。

      1) 在使用include函数定义路由时,可以使用namespace参数定义路由的命名空间,例如

url(r'^users/', include('users.urls', namespace='users')),

      命名空间表示,凡是users.urls中定义的路由,均属于namespace指明的users名下。
      命名空间的作用:避免不同应用中的路由使用了相同的名字发生冲突,使用命名空间区别开。

      2) 在定义普通路由时,可以使用name参数指明路由的名字,如

	url(r'^index/$', views.index, name='index'),
    url(r'^register/$', views.RegisterView.as_view(), name='register'),

      2)反解析和重定向

from django.shortcuts import render
from django.http import HttpResponse
# 导入类视图
from django.views import View
# 导入reverse反解析
from django.urls import reverse
# 导入redirect重定向
from django.shortcuts import redirect

def index(request):
    '''
    index视图
    :param request:每个视图函数都使用HttpRequest对象作为第一个参数,并且通常称之为request。
    :return:这个视图会返回一个HttpResponse对象,其中包含生成的响应。 每个视图函数都负责返回一个HttpResponse对象。 (有例外,我们接下来会讲。)
    '''
    return HttpResponse("hello the world!")


def reverse_test(request):
    # 反解析命名空间为user下的命名为index的url路径
    url = reverse('users:index')
    print(url)
    # redirect重定向到index视图
    return redirect(url)

在这里插入图片描述
**输入http://localhost:8000/users/serever会自动跳转到http://localhost:8000/users/index
在这里插入图片描述

4. 路径结尾斜线/的说明

      Django中定义路由时,通常以斜线/结尾,其好处是用户访问不以斜线/结尾的相同路径时,Django会把用户重定向
      到以斜线/结尾的路径上,而不会返回404不存在。如

urlpatterns = [
    url(r'^index/$', views.index, name='index'),
]

      用户访问 index 或者 index/ 网址,均能访问到index视图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值