2010-05-09 30 views
13

Có cách nào để hiển thị trang html mà không có mô hình xem trong django nếu một trang sẽ hiển thị chỉ html tĩnh không?Có cách nào để hiển thị trang html không có mô hình xem không?

Ngoài ra, tôi có thể chuyển hướng đến trang html thay vì url không? Ví dụ, thay vì làm điều này:

return HttpResponseRedirect('form/success/') 

tôi có thể làm điều này:

return HttpResponseRedirect('success.html') 

?

Trả lời

15

Đối với HTML tĩnh, bạn có thể sử dụng Flatpages app.

Bạn cũng có thể phục vụ các mẫu render (mà có thể chứa chỉ HTML tĩnh) nhưng bạn sẽ cần một cái nhìn:

from django.shortcuts import render_to_response 
def some_view(request): 
    return render_to_response('sometemplate.html') 

Về chuyển hướng, về cơ bản bạn không thể chuyển hướng đến trang HTML bằng cách chỉ cho tên tập tin, ngay cả khi nó được phục vụ tĩnh bởi máy chủ web, bạn vẫn sẽ sử dụng một URL trỏ đến tệp đó.

18

Bạn có thể hiển thị mẫu không có chế độ xem bằng cách sử dụng chế độ xem chung direct_to_template.

Chuyển hướng đến success.html không phải là cách để chuyển sang django vì success.html không có URL được liên kết. Bạn luôn phải liên kết mẫu với url thông qua chế độ xem (direct_to_template là chế độ xem nhận tất cả các đối số của nó từ conf trong urls.py nhưng vẫn là chế độ xem)

+13

'direct_to_template' đã không được chấp nhận; xem [câu hỏi này] (http://stackoverflow.com/a/15117932/662761) cho 1,5+ – Jack

+0

Liên kết đó cũng bị hỏng ngay bây giờ. –

18

direct_to_template không còn hoạt động trong Django 1.8. Dưới đây là làm thế nào để làm điều đó trong 1,8, trong urls.py:

from django.views.generic import TemplateView 

urlpatterns = [ 
    url(r'^$', TemplateView.as_view(template_name="your_static.html"), name='whatever'), 
] 
+0

hoạt động cho phiên bản 1.8 trở lên. – shadow0359

+0

Chúng ta có cần thực hiện điều đó cho mọi HTML tĩnh không? – Anupam

+0

@AnupamJain yep, – Cheng

1

Tôi khá chắc chắn đây không phải là những gì OP muốn làm, nhưng nếu ai đó muốn làm một cái gì đó mà không có một quan điểm, (để gửi email hoặc gắn vào mã html khác), bạn có thể sử dụng điều này:

from django.template.loader import render_to_string 
html = render_to_string('template.html', params) 
Các vấn đề liên quan