3 回答

TA貢獻1812條經驗 獲得超5個贊
你可以這樣做:view.py
from django.views.generic import TemplateView
class PageView(TemplateView):
def get_template_names(self):
template_name = "path_to_template/{}.html".format(self.kwargs["page_name"])
return [template_name]
然后將更改添加到您的 urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('pages/<page_name>/', views.PageView.as_view()),
path('', views.home_page),
]

TA貢獻2011條經驗 獲得超2個贊
您可以有一個單獨的模型來存儲生成的 HTML 的路徑,就像這樣
class HTMLGenerated(models.Model):
name = models.CharField(max_length=100)
path = models.CharField(max_length=500) # This will store the relative path
然后您可以在 URL 模式中使用 URL 參數,如下所示:
urlpatterns = [
path('admin/', admin.site.urls),
path('<int:html_id>/reports/', views.report_view)
]
相應的視圖可以處理類似的東西:
def report_view(request, html_id):
object = get_object_or_404(HTMLGenerated, pk=html_id)
# You can access the HTML by
html = object.path
# Return the context
return render(
request,
'some_template',
context = {
'html': html
}

TA貢獻1828條經驗 獲得超6個贊
從評論移動到這里進行代碼格式化,請您進一步指導和糾正我。謝謝堆。
這是更新的 urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('pages/<page_name>/', views.PageView.as_view()),
path('', views.welcome_page, name='welcome_page'),
path('results/', views.andreys_generate_results_file, name='andrey_script')
]
這是 views.py 代碼
class PageView(TemplateView):
def get_template_names(self):
template_name = "templates/{}.html".format(self.kwargs["page_name"])
return [template_name]
def andreys_generate_results_file(request):
hhmmss = str(datetime.now().strftime("%H%M%S"))
yyyymmdd = str(datetime.now().strftime("%Y%m%d"))
# new_file_name = yyyymmdd + "/results_" + hhmmss + ".html" # actual line, commented for Andrey
new_file_name = "templates/results_" + hhmmss + ".html"
ls_cmd = "pwd; ls -lart | tee " + new_file_name
output = subprocess.Popen(ls_cmd, shell=True, stdout=subprocess.PIPE)
wait_for_sec = request.POST.get('seconds')
time.sleep(int(wait_for_sec))
return render(request, new_file_name)
def welcome_page(request):
# Purpose: Just display welcome_page.html
return render(request, 'welcome/welcome_page.html')
這是 welcome_page.html 表單代碼的一部分:
<p>New Form</p>
<hr>
<form action="{% url 'andrey_script' %}" method="post">
{% csrf_token %}
Text:
<input type="text" name="seconds" required><br><br>
<button type="submit" value="Run Python Script"> Click to Run Python Script</button>
</form>
添加回答
舉報