📅  最后修改于: 2023-12-03 15:00:27.072000             🧑  作者: Mango
在 Django 中,我们可以很方便地设置和管理打印功能。可以通过 Django Admin 或在视图中使用打印功能。下面是一些有关打印设置的详细信息。
Django 打印有两种类别:admin 打印和视图打印。你可以通过创建 PrintForm 或 PrintModelForm 来设置打印的功能。其中 PrintModelForm 只能使用在 admin 中。
导入 PrintingInline
或 PrintModelForm
模型类,使用 inlines
或 form
属性。
from django.contrib import admin
from .models import Post, Category
from django_printing.admin import PrintingInline
admin.site.register(Category)
class PostAdmin(admin.ModelAdmin):
inlines = [PrintingInline]
admin.site.register(Post, PostAdmin)
# 或者
from django_printing.forms import PrintModelForm
class PostForm(PrintModelForm):
class Meta:
model = Post
fields = "__all__"
class PostAdmin(admin.ModelAdmin):
form = PostForm
admin.site.register(Post, PostAdmin)
Django 打印提供了 printing
装饰器来在视图中添加打印功能。只需在视图函数上添加该装饰器即可。
from django.shortcuts import render
from django.views.decorators.printing import printing
@printing
def hello(request):
return render(request, 'hello.html', {})
一个简单的例子来展示如何使用打印功能, 一个 PrintForm
表单和视图函数。
from django.shortcuts import render
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_POST
from django_printing.forms import PrintForm
def index(request):
form = PrintForm()
return render(request, 'index.html', {'form': form})
@csrf_exempt
@require_POST
def print_page(request):
form = PrintForm(request.POST)
if form.is_valid():
html = form.cleaned_data['html']
# Return HttpResponse with the generated PDF
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="mypdf.pdf"'
response.write(html)
return response
return HttpResponse('')
# index.html
{% extends 'base.html' %}
{% block content %}
<form action="{% url 'print_page' %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Print</button>
</form>
{% endblock %}
在上述示例中,我们使用了 PrintForm
表单。在 print_page
视图函数中,如果表单验证通过,我们将生成的 PDF 作为 HttpResponse
返回。
Django-printing 使用 BSD 许可证。有关详细信息,请参阅 LICENSE 文件。
以上是 Django 打印设置的介绍。如果您想要更多的信息,请查阅官方文档。