亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

django 在每次運行時顯示新生成的 html 文件

django 在每次運行時顯示新生成的 html 文件

慕碼人8056858 2023-02-07 14:41:26
我有一個 python 腳本 (A.py),它接受用戶通過表單輸入并運行另一個 python 腳本 (B.py)。B.py 將 html 格式的結果存儲到名為 yymmdd 的文件夾中。B.py 生成的文件類似于“results_hhmmss.html”,因此每次執行 B.py 腳本時都會創建一個新的 html 文件。根據我下面的 urls.py 代碼,訪問 127.0.0.1:8888 會將我帶到 home_page。此外,一旦我使用主頁中的按鈕提交表單,腳本就會成功執行,并生成結果文件。此外,如何呈現下一個網頁以查看生成的 results_hhmmss.html 文件?我不確定如何構建 urlpatters,因為每次運行腳本時,結果文件都有一個新名稱。from django.contrib import adminfrom django.urls import pathfrom . import viewsurlpatterns = [    path('admin/', admin.site.urls),    path('', views.home_page),    # what path or paths to add here ???]我還希望在地址欄中看到文件 results_hhmmss.html(位于文件夾 yymmdd 中)的相對路徑,以便稍后可以直接重新訪問同一鏈接。提前感謝您花時間閱讀這篇文章并愿意提供幫助。我正在使用 python3 和 Django 版本 3.0.7
查看完整描述

3 回答

?
慕雪6442864

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),

]


查看完整回答
反對 回復 2023-02-07
?
森林海

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

         }


查看完整回答
反對 回復 2023-02-07
?
30秒到達戰場

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>


查看完整回答
反對 回復 2023-02-07
  • 3 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號