Here's an example of a Django web application that recursively scans a directory and serves a nested list of files and folders as a webpage.

First, make sure you have Django installed in your Python environment. You can install it using pip:
```
pip install django
```

Create a new Django project and a new app:
```bash
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
```

Replace the contents of myapp/views.py with the following:
```python
from django.shortcuts import render
import os

def scan_directory(request, dir_path=''):
    def get_nested_list(directory):
        nested_list = []

        for entry in os.scandir(directory):
            if entry.is_file():
                nested_list.append({'name': entry.name, 'type': 'file'})
            elif entry.is_dir():
                nested_list.append({'name': entry.name, 'type': 'directory', 'items': get_nested_list(entry.path)})

        return nested_list

    base_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'example_directory')
    target_path = os.path.join(base_path, dir_path)
    list_data = get_nested_list(target_path)

    return render(request, 'myapp/list.html', {'dir_path': dir_path, 'list_data': list_data})
```

Replace the contents of myapp/urls.py with the following:
```python
from django.urls import path
from . import views

urlpatterns = [
    path('list/', views.scan_directory, name='scan_directory'),
    path('list/<path:dir_path>/', views.scan_directory, name='scan_directory'),
]
```

In your project's settings.py file, add myapp to the INSTALLED_APPS list:
```python
INSTALLED_APPS = [
    # ...
    'myapp',
]
```

In your project's urls.py file, include myapp.urls:
```python
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls')),
]
```

Create a templates folder in your app folder:
```bash
mkdir myapp/templates
```

Create a new HTML file in the templates folder: myapp/templates/myapp/list.html with the following content:
```html
<!DOCTYPE html>
<html>
<head>
    <title>Directory Listing</title>
</head>
<body>
    <h1>Directory Listing: {{ dir_path }}</h1>
    <ul>
        {% for item in list_data %}
            <li>
                {% if item.type == 'file' %}
                    {{ item.name }}
                {% elif item.type == 'directory' %}
                    <a href="{% url 'scan_directory' dir_path|add:item.name|add:'/' %}">{{ item.name }}</a>
                    <ul>
                        {% for subitem in item.items %}
                            <li>{{ subitem.name }}</li>
                        {% endfor %}
                    </ul>
                {% endif %}
            </li>
        {% endfor %}
    </ul>
</body>
</html>
```

Create an example directory in your project folder with some files and folders:
```
mkdir example_directory
```

Start your Django development server:
```
python manage.py runserver
```

Now, you can navigate to http://localhost:8000/list/ in your browser to see the directory listing for the example_directory. You can click on the folder links to navigate to subdirectories.

Please note that this implementation assumes that the directory being scanned is a local directory on the server running the Django application. If you want to scan a directory on a remote server or from a client-side web application, you will need to modify the implementation accordingly.

This Django app provides a similar functionality to the Node.js/Express example. It defines a route `list/` and `list/<path:dir_path>/` that takes an optional directory path as a URL parameter and returns a webpage with a nested list of files and folders in that directory. The `get_nested_list` function in the `scan_directory` view is used to recursively scan the directory and construct the nested list data. The list.html template is used to render the webpage with the nested list data.
นี่คือตัวอย่างของเว็บแอปพลิเคชัน Django ที่สแกนไดเรกทอรีซ้ำและให้บริการรายการไฟล์และโฟลเดอร์ที่ซ้อนกันเป็นหน้าเว็บ ขั้นแรก ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Django ในสภาพแวดล้อม Python ของคุณแล้ว คุณสามารถติดตั้งได้โดยใช้ pip: ``` pip ติดตั้ง django ``` สร้างโปรเจ็กต์ Django ใหม่และแอปใหม่: ``` bash django-admin startproject myproject cd myproject python Manage.py startapp myapp ``` แทนที่เนื้อหาของ myapp/views.py มีสิ่งต่อไปนี้: ``` python จาก django.shortcuts import render import os def scan_directory(request, dir_path=''): def get_nested_list(directory): Nested_list = [] สำหรับการเข้าสู่ os.scandir (directory ): if entry.is_file(): Nested_list.append({'name': entry.name, 'type': 'file'}) elif entry.is_dir(): Nested_list.append({'name': entry.name , 'type': 'directory', 'items': get_nested_list(entry.path)}) return Nested_list base_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__) ))), 'example_directory') target_path = os.path.join(base_path, dir_path) list_data = get_nested_list(target_path) return render(คำขอ, 'myapp/list.html', {'dir_path': dir_path, 'list_data': list_data}) ``` แทนที่เนื้อหาของ myapp/urls.py ด้วยสิ่งต่อไปนี้: ``` python จาก django.urls เส้นทางการนำเข้าจาก . นำเข้ามุมมอง urlpatterns = [ path('list/', views.scan_directory, name='scan_directory'), path('list/<path:dir_path>/', views.scan_directory, name='scan_directory'), ] `` ` ในไฟล์ settings.py ของโปรเจ็กต์ของคุณ ให้เพิ่ม myapp ลงในรายการ INSTALLED_APPS: ```python INSTALLED_APPS = [ # ... 'myapp', ] ``` ในไฟล์ urls.py ของโปรเจ็กต์ของคุณ ให้รวม myapp.urls: `` `python จากผู้ดูแลระบบนำเข้า django.contrib จากเส้นทางการนำเข้า django.urls รวม urlpatterns = [ path('admin/', admin.site.urls), path('', include('myapp.urls')), ] ` `` สร้างโฟลเดอร์เทมเพลตในโฟลเดอร์แอปของคุณ: ```bash mkdir myapp/templates ``` สร้างไฟล์ HTML ใหม่ในโฟลเดอร์เทมเพลต: myapp/templates/myapp/list.html โดยมีเนื้อหาต่อไปนี้: ```html <!DOCTYPE html> <html> <head> <title>รายการไดเรกทอรี</title> </head> <body> <h1>รายการไดเรกทอรี: {{ dir_path }}</h1> <ul> {% สำหรับรายการใน list_data %} <li> {% ถ้า item.type == 'ไฟล์' %} {{ item.name }} {% elif item.type == 'ไดเรกทอรี' %} <a href="{% url 'scan_directory' dir_path|add:item.name|add:'/' %}">{{ item.name }}</a> <ul> {% สำหรับรายการย่อยใน item.items %} <li>{{ subitem.name } </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> </body> </html> ``` สร้างไดเร็กทอรีตัวอย่างในโครงการของคุณ โฟลเดอร์ที่มีไฟล์และโฟลเดอร์บางส่วน: ``` mkdir example_directory ``` เริ่มเซิร์ฟเวอร์การพัฒนา Django ของคุณ: ``` python Manage.py runserver ``` ตอนนี้คุณสามารถไปที่ http://localhost:8000/list/ ใน เบราว์เซอร์เพื่อดูรายการไดเรกทอรีสำหรับ example_directory คุณสามารถคลิกที่ลิงค์โฟลเดอร์เพื่อนำทางไปยังไดเร็กทอรีย่อย โปรดทราบว่าการใช้งานนี้จะถือว่าไดเร็กทอรีที่กำลังสแกนเป็นไดเร็กทอรีในเครื่องบนเซิร์ฟเวอร์ที่รันแอปพลิเคชัน Django หากคุณต้องการสแกนไดเร็กทอรีบนเซิร์ฟเวอร์ระยะไกลหรือจากเว็บแอปพลิเคชันฝั่งไคลเอ็นต์ คุณจะต้องแก้ไขการใช้งานตามนั้น แอป Django นี้มีฟังก์ชันการทำงานคล้ายกับตัวอย่าง Node.js/Express โดยกำหนดเส้นทาง `list/` และ `list/<path:dir_path>/` ที่ใช้เส้นทางไดเรกทอรีเสริมเป็นพารามิเตอร์ URL และส่งคืนหน้าเว็บที่มีรายการไฟล์และโฟลเดอร์ที่ซ้อนกันในไดเรกทอรีนั้น ฟังก์ชัน `get_nested_list` ในมุมมอง `scan_directory` ใช้เพื่อสแกนไดเรกทอรีซ้ำและสร้างข้อมูลรายการที่ซ้อนกัน เทมเพลต list.html ใช้เพื่อแสดงหน้าเว็บด้วยข้อมูลรายการที่ซ้อนกัน
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence