2017-04-06 1 views
1

Je travaille actuellement sur un site de banque de questions en utilisant Django 1.87 qui permet aux utilisateurs de se connecter et de voir les dernières questions sauvegardées. Jusqu'à présent, j'ai été en mesure d'afficher des liens vers les questions passées dans la base de données sur la sélection de l'utilisateur. les questions précédentes sont téléchargées sous forme de document ou de format PDF et stockées dans le répertoire média.Django comment ouvrir et afficher des documents docx ou pdf enregistrés

Je veux que les utilisateurs connectés puissent ouvrir et lire le contenu de la question précédente avant de décider de l'imprimer ou de la télécharger. Jusqu'à présent, j'ai été en mesure d'afficher une liste de liens vers les documents et quand je clique sur un lien, il télécharge le document sur mon ordinateur. Ce que je veux vraiment réaliser, c'est que les utilisateurs puissent cliquer sur un lien et ouvrir le document depuis le navigateur avant de cliquer sur un code de téléchargement ou de l'imprimer.

voici mes codes:

models.py

classe Questionbank (models.Model):

date = models.DateField(_("Date"),default=date.today) 
class_level = models.ForeignKey(ClassLevel) 
course_name = models.CharField(max_length=350) 
course_code = models.CharField(max_length=20) 
question_papers = models.FileField(upload_to = 'Question_Papers/  %y/%m/%d') 

views.py Questions def (demande, sel_course):

context = RequestContext(request) 
SelCourse = sel_course.replace('_',' ') 
context_dict = {'SelCourse':SelCourse} 

try: 
    Quest_For_course = QuestionBank.objects.filter(course_code = SelCourse) 
    context_dict['Quest_For_course'] = Quest_For_course 

except course_code.DoesNotExist: 
    pass 

return render_to_response('Qbank/QuestionsPage.html', context_dict, context) 

dans mon modèle J'ai ce

QuestionsPage.html

<title> Question Papers </title> 

<body> 
    <h2> LIST OF QUESTION PAPERS FOR {{selCourse}} </h2> 

    <h3> Select question to view, download or print it</h3> 

    {% if Quest_For_course %} 

    <ul>{% for ques in Quest_For_course %} 

    <li><a href="{{ques.question_papers.url}}"> 

    {{ques.question_papers}} </a></li> 

    {%endfor%} 
    </ul> 

    {%else%} 
    <strong> THERE ARE NO AVAILABLE QUESTION FOR THIS CLASS AT THE MOMENT </strong> 
    {%endif%} 
</body> 

Comment puis-je vue-able documents question du passé? sur un formulaire qui a télécharger et imprimer le bouton. merci

+0

jetez un coup d'oeil à ceci - http://stackoverflow.com/questions/39919012/django-python-show-pdf-in-a-template – Compadre

+0

@Compadre Je suis reconnaissant pour le lien arbitré, il a vraiment aidé à clarifiant tellement de choses que j'étais confus au sujet de. mais maintenant je fais face à un autre défi et ses noix de conduite comme ont essayé tant de méthodes pour obtenir le chemin absolu de travailler sur les fichiers, je suis tellement confus et je ne sais pas quoi faire d'autre à ce sujet. Voici ce que j'ai fait – jids

+0

quelqu'un devrait s'il vous plaît m'aider à ce sujet, je suis coincé je ne sais pas quoi d'autre à essayer. ce code me donne ici le chemin absolu vers les fichiers que je veux sortir file_path = os.path.join (settings.MEDIA_ROOT, 'QuestionPapers', File_Name) mais je reçois toujours FileNotFoundError – jids

Répondre

0

Si je renvoie un HttpResponse(file_path), il renvoie le chemin absolu vers le fichier que je veux ouvrir. Quand je lance le code ci-dessous, je reçois:

Type d'exception: « FileNotFoundError

Pourquoi python ne voit pas le fichier même quand le chemin absolu est bon S'il vous plaît aider:

def Display(request, file_name): 

    File_Name = file_name.replace('_', ' ') 
    file_path = os.path.join(settings.MEDIA_ROOT, 'QuestionPapers',File_Name) 

    with open(file_path,'r') as pdf: 
     response = HttpResponse(pdf.read(), content_type = 'application/pdf') 
     response['Content-Disposition'] = 'attachment;filename=some_file.pdf' 
    return response