将文件路径作为Django中的URL参数传递

问题描述 投票:0回答:1

我正在使用Django创建一个Web应用。当用户按下某个按钮时,它需要将文件路径作为参数和字符串参数传递给我的一个视图。由于路径包含多个“ /”,因此我不能简单地在URL中使用参数。我现在设置的方式如下:

parameters.py

class FilePathConverter:
regex = '^[/]'

def to_python(self, value):
    value=str(value)
    return value.replace("?", "/")

def to_url(self, value):
    value=str(value)
    return value.replace("/", "?")

urls.py

from django.urls import path
from . import views
from django.contrib import admin
from django.views import generic
from django.urls import path, register_converter
from . import converters, views

register_converter(converters.FilePathConverter, 'filepath')

urlpatterns = [
   path('', views.index, name='webpanel-index'),
   path('controlserver/<filepath:server_path>/<str:control>', views.index, name='controlserver'),
]

views.py

from django.shortcuts import render
from django.http import HttpResponse
from .models import Server
from django.contrib.auth.decorators import login_required
import subprocess

def controlserver(request, server_path, control):
    if request.POST:
        subprocess.call(['bash', server_path, control])
    return render(request, 'index.html')

但是,用这种方法,我得到这个错误:

Reverse for 'controlserver' with keyword arguments '{'server_path': 'rien/', 'control': 'start'}' not found. 1 pattern(s) tried: ['controlserver/(?P<server_path>[^/]+)/(?P<control>[^/]+)$']
django filepath url-parameters
1个回答
0
投票

从django.utils.text import slugify


路径('controlserver / use slug .....',views.index,name ='controlserver'),

但是您需要在视图和模板中添加子弹,因此请检查此子弹和pk列表:

https://github.com/salah-cpu/migration/blob/master/PATH_slug_pk

© www.soinside.com 2019 - 2024. All rights reserved.