django网页制作(4)django项目的应用APP——APP结构

目录

一、django项目结构

二、django项目规范

三、URL分发器

四、urls.py中path路径设置一些问题


 

一、django项目结构

1、manage.py

基于此文件与项目交互操作,在终端输入:python manage.py [子命令]

manage.py子命令列表:python manage.py help

2、setting.py:保存项目的配置信息

3、urls.py:实现url与视图函数映射,接收到请求,在此文件中找到对应的视图函数。

4、wsig.py:部署项目。

二、django项目规范

按照功能或者模块进行分层,分成一个个app,所有和这个模块相关的视图写在对应app的views.py中,并且模型和其他的也类似。

django创建APP:CMD进入到项目目录,执行python manage.py startapp [app名称]

APP是一个python包。包有django约定固定名称文件,如__init__py、views.py、models.py、admin.py、tests.py、apps.py、migrations包等。

在项目下右键,新建——python package(不是directory),目录与python包区别是python包中有一个__init__.py文件。

三、URL分发器

URL dispatcher | Django documentation | Django  https://docs.djangoproject.com/en/2.2/topics/http/urls/

1、视图函数:一般写在app的views.py中。

视图函数的第一个参数必须是request(一个HttpRequest)对象。这个对象存储了请示的信息,包括携带的参数及头部信息。

from django.http import HttpResponse
from django.db import connection  # 获取django的connection对象,自动获取settings.py中的数据库配置信息。
from django.shortcuts import render,  redirect,  reverse
from znwork.models import ReportZnWork


def get_cursor():
    return connection.cursor()


def znwork_addrecords(request):
    if request.method == 'GET':
        print('dsssss')
        return render(request, "znwork_addrecords.html")
    else:
        print('dddd')
        name1 = request.POST.get("name1")
        name2 = request.POST.get("name2")
        print("口味来了:", name1, name2)
        cur2 = get_cursor()
        cur2.execute("insert into dailyreport(znwork_id,班组,产量) values(null,'%s','%s')" % (name1, name2))
        aaa = ReportZnWork(Teams=name1, Output=name2)
        aaa.save()

    return redirect(reverse(index1))

视图函数的返回值必须是:HttpResponse或其子类的对象,django.http.response.HttpResponseBase的子类的对象。

在views.py文件中,找到from django.http import HttpResponse行,光标移动至httpresponsebase上面,按下Ctrl+B,可调出该类的相关内容。

2、URL映射(urls.py文件实现):

视图与URL映射。即用户在浏览器中输入url时,可以请示到这个视图函数。django在urls.py的rulpatterns变量中读取匹配规则,匹配规则用django.urls.path函数进行包裹,这个函数根据传入的参数返回URLPattern或者RULResolver的对象。

urls.py文件内容:

from django.contrib import admin
from django.urls import path
from znwork.views import index1
from znwork.views import *

urlpatterns = [
    path('', index1),
    path('zn/', znwork_addrecords),
    path('admin/', admin.site.urls),
    path('d/d/', index1)

path函数:path(route,view,name-none,kwargs-none)

route:url的匹配规则。指定url中要传递的参数,

如:访问文章详情页时,通过<>来指定传递一个(可指定类型)参数id,<int:id>。

参数类型:

str:非空的字符串类型。默认的转换器,不能包含斜杠。

int:匹配任意的正整数或零;slug:由英文中的横杠、或者下划线连接英文字符或数字组成的字符串;uuid:匹配uuid字符串、path:匹配非空的英文字符串,可以包含斜杠。

view:匹配任意的视图函数或者是类视图.as_view(),或者是django.urls.include()函数的返回值。

name:为此url命名。在项目较大,url较多时用途较大。

kwargs:在需要时,可为视图函数传递一些额外参数。这个参数接收一个字典,作为一个参数传至视图函数中去。

 

四、urls.py中path路径设置一些问题

问题1:Django - The current URL, didn't match any of these

在urls.py中设置:path('/a', f_a),目的:浏览器地址栏:http://127.0.0.1:8000/a,执行f_a这个视图函数。

提示如下错误

Request Method:GET
Request URL:http://127.0.0.1:8000/a

浏览器地址栏输入http://127.0.0.1:8000//a,可以正常访问。

将urls.py中改为path('a/',f_a),浏览器地址栏输入http://127.0.0.1:8000/a,可以正常访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值