Передайте путь к файлу в качестве параметра URL в Django - PullRequest
0 голосов
/ 14 апреля 2020

Я использую Django для создания веб-приложения. Когда пользователь нажимает на определенную кнопку, он должен передать путь к файлу в качестве параметра и строковый параметр в один из моих просмотров. Я не могу просто использовать параметр в 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>[^/]+)$']

1 Ответ

1 голос
/ 15 апреля 2020

вы можете использовать Slug для разрешения этого шаблона:


из django .utils.text import slugify

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

, но вам нужно поставить slug в представлениях и шаблонах. Проверьте этот список slug и pk:

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

...