dudusf04 0 Report post Posted November 7 Boa tarde, Tenho em uma pasta vários ficheiros em txt e xml, o que eu gostaria de fazer é que esse ficheiros fossem visto em uma div de uma pagina em html. tenho um código em python e já faz a listagem destes ficheiros (testado com pycharm), só que não sei como retornar/enviar os dados. import os path = 'c:\\winpy\\' files = [] # r=root, d=directories, f = files for r, d, f in os.walk(path): for file in f: if '.txt' in file: files.append(os.path.join(r, file)) if '.xml' in file: files.append(os.path.join(r, file)) for f in files: print(f) No ficheiro html coloquei um ficheiro estático para fazer um teste e assim poder validar que o ficheiro funciona, o problema e que tenho vários txt e quero que todos sejam vistos. {% load static %} <a href="{% static 'file/10.20.100.1_hora:02-11-2019-21:00_running-config.txt' %}">teste</a> alguém pode por favor dar-me uma dica ou conselho para ultrapassar está questão? Share this post Link to post Share on other sites
M6 141 Report post Posted November 7 Não sei se compreendi bem a tua questão. O teu script gera o html ou queres que o web server corra o teu script ou é outra coisa? 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Share this post Link to post Share on other sites
dudusf04 0 Report post Posted November 7 Olá M6, Desde já obrigado pela ajuda. eu quero que o web server corra o meu script. Share this post Link to post Share on other sites
M6 141 Report post Posted November 8 Que framework web python é que estás a usar? 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Share this post Link to post Share on other sites
M6 141 Report post Posted November 11 Fazes a obtenção no controlador e envias a lista para a view. Na view, listas os ficheiros. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Share this post Link to post Share on other sites
dudusf04 0 Report post Posted November 11 M6 creio que é isso que estou a fazer mas estou errando em algo e não consigo saber no que é. views.py from django.http import Http404, HttpResponse # # File Backup # def File_b(request): path = 'file/' files = [] # r=root, d=directories, f = files for r, d, f in os.walk(path): for fil in f: if '.txt' in fil: files.append(os.path.join(r, fil)) if '.xml' in fil: files.append(os.path.join(r, fil)) for f in files: fi = f return HttpResponse(fi) url.py # file backups url(r'file/', views.File_b, name = 'file_b'), file_backup.html {% if file_b %} {% load static %} <table class="table table-hover panel-body"> <tr> <th>Name</th> <th>Size</th> <th>Created</th> <th></th> </tr> {% for file in file_b %} <tr{% if not file.size %} class="danger"{% endif %}> <td> <i class="fa fa-image"></i>i <a href="{% static file %}" target="_blank">{{ file }}</a> </td> <td>{{ file.size|filesizeformat }}</td> <td>{{ file.created }}</td> {% endfor %} </table> {% else %} <div class="panel-body"> {% load static %} <a href="{% static file_b %}" target="_blank">{{ file_b }}</a> <!-- <a href="{% static 'file/10.20.100.1_hora:02-11-2019-21:00_running-config.txt' %}">teste</a> <span class="text-muted">None</span>--> </div> {% endif %} se puder dar um dica ou alguma indicação, sou bastante agradecido. Share this post Link to post Share on other sites
M6 141 Report post Posted November 11 No controlador estás unicamente a juntar à lista o nome dos ficheiros (é só uma string), pelo que files.append tem strings e não identificadores de ficheiros, o que quer dizer que o file.size ou file.created não vai ter o efeito desejado na view uma vez que file é apenas uma string e não tem esses métodos. Mas antes disso, no controlador, tens um loop pela lista de files (não percebo porquê) mas que ao fim do primeiro elemento (ou seja ficheiro), fazes o render da view da terminas. Devias ter: # r=root, d=directories, f = files for r, d, f in os.walk(path): for fil in f: if '.txt' in fil: files.append(os.path.join(r, fil)) if '.xml' in fil: files.append(os.path.join(r, fil)) return HttpResponse(files) E na view deves mostar apenas o nome do ficheiro (que é a única coisa que tens). 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Share this post Link to post Share on other sites
dudusf04 0 Report post Posted November 12 (edited) Olá M6, Nesta parte file.size ou file.created não vai ter o efeito desejado, compreendo que não funcione. também estou a pesquisar qual é a melhor biblioteca para esta função. Realizei a alteração que aconselhaste a fazer e mesmo assim os dados não chega na variável que está no file_backup.html , o que me leva a pensar que poderá ser na url.py. Digo isso, no intuito de ainda não percebido bem o conceito da url. Edited November 12 by dudusf04 Share this post Link to post Share on other sites
M6 141 Report post Posted November 15 O URL é o motor de redirecionamento, bastante útil, por exemplo, para fazeres SEO i18n. É apenas um dispatcher para redirecionar os pedidos HTTP para o controlador/view correto podes ver mais aqui: https://docs.djangoproject.com/en/2.2/topics/http/urls/. A primeira validação que tens de fazer é confirmar que o teu "File_b" está a executar corretamente. Podes usar return HttpResponse("batatas") para ver se está a executar corretamente. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Share this post Link to post Share on other sites