Django项目实战--如何通过runserver运行app文件夹中的.py文件


之前在windows电脑上采用FLASK架构开发了一个防火墙策略自动生成的工具,现想通过Django框架实现这一功能。

实现过程、问题、解决方法如下:

1、创建Django项目

django-admin startproject storm02

2、创建app

python manage.py startapp myapp

3、将FW_Policy_auto_create_django.py放在myapp目录下

(py3_conda) [root@centos7 myapp]# pwd
/root/storm02/myapp
(py3_conda) [root@centos7 myapp]# ls
admin.py  apps.py  FW_Policy_auto_create_django.py  __init__.py  migrations  models.py  __pycache__  tests.py  views.py
(py3_conda) [root@centos7 myapp]# 

4、安装APP

将myapp添加到Django项目的配置中。在myproject/settings.py文件中找到INSTALLED_APPS设置项,并添加你的App名称:

INSTALLED_APPS = [
    # ... 其他App
    'myapp',
]

5、修改允许的主机地址

在myproject/settings.py文件中找到ALLOWED_HOSTS设置项,并添加允许运行该项目的主机地址:

ALLOWED_HOSTS = ['*']

*表示允许所有主机地址
 

6、在myapp目录的views.py文件中定义一个视图函数,并在函数中调用您新建的.py文件中的函数或逻辑。

(py3_conda) [root@centos7 myapp]# cat views.py 
from .FW_Policy_auto_create_django import FW_Policy_Auto_Create
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
from django.http import JsonResponse
import json

@csrf_exempt   #Django默认启用了CSRF保护来防止CSRF攻击,此处关闭该功能
def my_view(request):
    if request.method == 'POST':    #客户端通过POST推送数据
        # 获取POST数据
        request_data = json.loads(request.body)   #客户端推送的数据格式为json,服务端需要json解析,否则无法获取到需求数据
        demand_data=request_data["data"]    #获取需求数据中的字典“data”的数据

        # 进行运算或处理
        result = FW_Policy_Auto_Create(demand_data)     #运用myapp中的FW_Policy_auto_create_django.py文件中的FW_Policy_Auto_Create函数进行运算
        return JsonResponse(result)   #返回json数据给客户端,result需要为字典格式,否则报错
    # 如果不是POST请求,返回错误响应
    return JsonResponse({'error': 'Invalid request method'}, status=400)  #如果请求方式不是post,则报错,例如http方式无法访问此路径,报错400
(py3_conda) [root@centos7 myapp]# 

7、在项目的urls.py文件中,将该视图函数与一个URL路径进行关联。

(py3_conda) [root@centos7 storm02]# cat urls.py 
"""
URL configuration for storm02 project.

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.2/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
from myapp.views import my_view

urlpatterns = [
    path('admin/', admin.site.urls),
    path('my-url/',my_view),    #创建一个新的url,并与刚才创建的myapp.views中的my_view函数关联
]
(py3_conda) [root@centos7 storm02]# 

8、启动django项目,在项目根目录下运行python manage.py runserver 0.0.0.0:8000

9、客户端通过访问http://serverip:8000/my-url/ 推送需求数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值