Je crée une application avec Django. Je veux générer le pdf quand je regarde le lien choisi. J'ai donc utilisé weasyprint module pour convertir mon pdf. J'importe le module de weasyprint. Mais quand je cours cette application, j'ai trouvé une erreur. Ce est views.py fichierUnicodeDecodeError: Django Générer un PDF avec weasyprint
def customersProfile(request, customer_id, sys_type):
sys_type=sys_type
area="profile"
site_credit = site_credit1
time_now=timezone.now()
customers=get_object_or_404(CustomerInfo, pk=customer_id)
html_string = render_to_string('shop/profile.html', {'customers': customers, 'todaydate': today_date,'site_name': 'Moon Telecom', 'time_now': time_now, 'site_credit': site_credit, 'area': area})
html = HTML(string=html_string)
result = html.write_pdf()
response = HttpResponse(content_type='application/pdf;')
response['Content-Disposition'] = 'inline; filename=list_people.pdf'
response['Content-Transfer-Encoding'] = 'binary'
with tempfile.NamedTemporaryFile(delete=True) as output:
output.write(result)
output.flush()
output = open(output.name, 'r')
response.write(output.read())
return response
Ceci est fichier HTML. Je veux créer pdf ce fichier html.
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body style>
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="site_title" style="text-align:center; margin:0 auto">
<h3>মুন টেলিকম</h3>
<h3>
<a href="{% url 'shop:index' %}" target="_blank">{{site_name}}</a>
</h3>
<div class="invoice_info_one" style="width:100%; text-align:center">
<p>সকল প্রকার মোবাইল সেট, সীম কার্ড, মেমোরী কার্ড, MP-3, সোলার চার্জার, সোলার ফ্যান, মোবাইল ফোনের ব্যাটারী, চার্জার, ক্যাচিং,কাভার,হেডফোন, রেবন, ডিসপ্লে এবং ইলেট্রিক মালামাল বিক্রেতা</p>
</div>
<div class="invoice_location">
<p>জাহাঙ্গীর সুপার মার্কেট, ব্রীজ রোড, ফুলহাতা বাজার, মোডেলগঞ্জ।</p>
</div>
<div class="invoice_contact">
<p>01717-051200(সুকান্ত) 01828-163858(দোকান)</p>
<p><b>Email:</b> [email protected]</p>
</div>
<div class="copy_right">
{% if site_credit %}
<p>{{site_credit}}</p>
{% else %}
<a href="{% url 'shop:nothing' %}">#</a>
{% endif %}
<p></p>
</div>
<hr>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="customer_info">
{% if customers.customer_name %}
<h2 style="font-size:15px">Customer Name:
<b> {{customers.customer_name}}</b>
</h2>
{% else %} <p> Name: দেওয়া হয়নি</p> {% endif %}
<p style="font-size:14px">Phone Number:
{% if customers.customer_mobile_no %}
{{customers.customer_mobile_no}}
{% else %}
No Mobile Number
{% endif %}
</p>
<p style="font-size:14px">Purchase Time: {{customers.customer_sell_date}}</p>
<p style="font-size:14px">invoice id: <b>{{customers.customer_uid}}</b></p>
<p>{{customers.product_warrenty}}</p>
</div>
</div>
</div>
</div>
<div class="table table-bordered">
<table class="table">
<thead>
<tr>
<th>Product Name</th>
<th>Product ID</th>
<th>Warrenty</th>
<th>QN</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{customers.customer_product_name}}</td>
<td>{{customers.customer_product_id}}</td>
<td>{% if customers.customer_product_warrenty == '' %}
<b>No Warrenty</b>
{% else %}
<b> {{customers.customer_product_warrenty}}</b> Month</td>
{% endif %}
<td>{{customers.customer_product_quantity}}</td>
<td>{{customers.customer_price}} Taka</td>
</tr>
</tbody>
<tr>
<td colspan="3"></td>
<td colspan="1">
<b>Total Amount</b>
</td>
<td colspan="1">
<b>{{customers.customer_price}}</b> Taka</td>
</tr>
</table>
{% if customers.customer_conditions %}
<div class="warning">
<p style="font-size:8px; width:500px;line-height:15px;"><i>{{customers.customer_product_name}} {{customers.customer_conditions}}</i></p>
</div>
{% else %} {% endif %}
</div>
</div>
<div class="footer">
<div class="footer_info">
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="footer_info">
<p>Print date: {{time_now}}</p>
<p>
<b>বিঃদ্রঃ ডেলিভারির সময় মাল বুঝিয়া নিবেন। পরে কোন আপত্তী গ্রহনযোগ্য নয়</b>
</p>
<h5>বিক্রিত মাল ফেরত নেওয়া হয় না</h5>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
Lorsque je parcourais cette URL. J'ai eu cette erreur. J'ai essayé de résoudre cette erreur. Mais je ne peux pas.
UnicodeDecodeError at /shop/1/customerpage/customerprofile/
'utf-8' codec can't decode byte 0xe2 in position 10: invalid continuation byte
Request Method: GET
Request URL: http://127.0.0.1:8000/shop/1/customerpage/customerprofile/
Django Version: 1.11.6
Exception Type: UnicodeDecodeError
Exception Value:
'utf-8' codec can't decode byte 0xe2 in position 10: invalid continuation byte
c'est tracebook plein Environnement:
Request Method: GET
Request URL: http://127.0.0.1:8000/shop/1/customerpage/customerprofile/
Django Version: 1.11.6
Python Version: 3.5.2
Installed Applications:
['shop.apps.ShopConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'crispy_forms',
'wkhtmltopdf']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/asad/Desktop/smartshop/django-app/shop/views.py" in customersProfile
333. response.write(output.read())
File "/usr/lib/python3.5/codecs.py" in decode
321. (result, consumed) = self._buffer_decode(data, self.errors, final)
Exception Type: UnicodeDecodeError at /shop/1/customerpage/customerprofile/
Exception Value: 'utf-8' codec can't decode byte 0xe2 in position 10: invalid continuation byte
Pouvez-vous ajouter le retraçage complet s'il vous plaît? – snakecharmerb
Je l'ai ajouté. S'il te plaît vérifie le. –