2017-12-29 7 views
1

저는 장고에 대해 아주 처음이에요.이게 내가 고려해서는 안되는 것이라면 용서해주세요.하지만 내 앱이 많은 정적 HTML 페이지에 링크 될 수 있기를 바랍니다. 각 URL 경로를 만드는 것은 비합리적인 일일 수 있습니다.) 그리고 FTP를 통해 저에게 업로드되는 파일이 계속 늘어나고 있습니다.장고에있는 정적 HTML을 서비스하십시오

이러한 HTML 파일의 경로를 내 STATICFILES_DIRS []에 추가하여 개발 서버에서이 작업을 수행 할 수 있지만 코드를 프로덕션으로 보내면 작동하지 않는 것 같습니다.

STATIC_ROOT을 설정하고 collectstatic을 실행했지만 도움이되지 않았습니다. 또한 작업을 수행하더라도 새 파일을 업로드 할 때마다 collectstatic을 실행해야 할 것이라고 걱정됩니다.

제 질문은 이것이 합리적입니까? 프로젝트와 함께 정적 HTML 파일을 호스팅하지 않고 별도의 도메인에있는 별도의 서버에서 그대로 두어야합니까?

정적 HTML 파일과 함께 Django 응용 프로그램에서 데이터를 표시하는 SQL LITE 데이터베이스가 있기 때문에 처음에 함께 호스팅하고 싶었던 유일한 이유는 내 응용 프로그램의 전체 목적입니다. 그러나, 나는 SQL LITE 파일을 ftlib처럼 사용하는 또 다른 방법을 구현할 수 있습니다. Django에 연결하기 위해 데이터베이스가 필요 없다는 것에주의하십시오. 단지 데이터를 읽어야합니다.

답변

0

모든 페이지에 대해 URL을 쓸 필요는 없습니다. 요청 된 페이지 이름을 url에서 "캡처"하고 그 값에 따라 페이지를 렌더링 할 수 있습니다.

# urls.py 
url(r'^page/(?P<page_name>\w+)/$', my_view) 


# views.py 
import os 
from django.http import HttpResponse, Http404 

FTP_UPLOAD_DIR = '/path/to/directory/where/you/upload/files/' 


def my_view(request, page_name): 

    # check if requested page exists 
    if os.path.exists(FTP_UPLOAD_DIR + page_name): 
     # if yes, then serve the page 
     with open(FTP_UPLOAD_DIR + page_name) as f: 
      response = HttpResponse(f.read()) 
     return response 

    else: 
     raise Http404 

위, 우리는 업로드 폴더에서 파일을 직접 읽고, 그래서 당신은 collectstatic를 실행 할 필요가 없습니다.

+1

빠른 답장을 보내 주셔서 감사합니다. 당신의 솔루션은 효과가 있었고 Django 2.0은 제 프로그래밍의 두려움 (Regex)을 피할 수있게 해 주었기 때문에 'url'대신 'path'를 사용하고 내장 된 경로 변환기를 활용했습니다. 알아내는 데 시간이 좀 걸렸지 만 코드가 좋은 출발점이었습니다. 다시 한 번 감사드립니다! –

관련 문제