Download link in template, when you have a model object with a filefield











up vote
0
down vote

favorite












Is it possible to make a download link in a html template, when you have a model object available, like this?



models.py



class Barcard(models.Model):
name = models.CharField(max_length=30)
drinks = models.ManyToManyField(Drink)
barcardFile = models.FileField(blank=True, upload_to='barcard')
mixingFile = models.FileField(blank=True, upload_to='mixing')


views.py



def download(request, barcard_id):
if request.method == 'GET':
barcard = get_object_or_404(Barcard, pk=barcard_id)
return render(request, 'drinks/download.html', {'barcard':barcard})
else:
return HttpResponseRedirect('/drinks/')


template/drinks/download.html



{% extends "drinks/base.html" %}
{% block fulltitle %}Drinks{% endblock %}
{% block content %}
<h1>{{ barcard.name }}</h1>
<p> Download barkort her: <a href='{{ MEDIA_URL }}{{ barcard.barcardFile.relative_path }}'>{{barcard.name}} barkort</a> </p>
<p> Download blandekort her: <a href='{{ MEDIA_URL }}{{ barcard.mixingFile.relative_path }}'>{{barcard.name}} blandekort</a></p>
{% endblock %}


Right now I don't get a file, when clicking the link. Have I missed something or will I have to do something completely different?










share|improve this question







New contributor




Hogfeldt is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
























    up vote
    0
    down vote

    favorite












    Is it possible to make a download link in a html template, when you have a model object available, like this?



    models.py



    class Barcard(models.Model):
    name = models.CharField(max_length=30)
    drinks = models.ManyToManyField(Drink)
    barcardFile = models.FileField(blank=True, upload_to='barcard')
    mixingFile = models.FileField(blank=True, upload_to='mixing')


    views.py



    def download(request, barcard_id):
    if request.method == 'GET':
    barcard = get_object_or_404(Barcard, pk=barcard_id)
    return render(request, 'drinks/download.html', {'barcard':barcard})
    else:
    return HttpResponseRedirect('/drinks/')


    template/drinks/download.html



    {% extends "drinks/base.html" %}
    {% block fulltitle %}Drinks{% endblock %}
    {% block content %}
    <h1>{{ barcard.name }}</h1>
    <p> Download barkort her: <a href='{{ MEDIA_URL }}{{ barcard.barcardFile.relative_path }}'>{{barcard.name}} barkort</a> </p>
    <p> Download blandekort her: <a href='{{ MEDIA_URL }}{{ barcard.mixingFile.relative_path }}'>{{barcard.name}} blandekort</a></p>
    {% endblock %}


    Right now I don't get a file, when clicking the link. Have I missed something or will I have to do something completely different?










    share|improve this question







    New contributor




    Hogfeldt is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      Is it possible to make a download link in a html template, when you have a model object available, like this?



      models.py



      class Barcard(models.Model):
      name = models.CharField(max_length=30)
      drinks = models.ManyToManyField(Drink)
      barcardFile = models.FileField(blank=True, upload_to='barcard')
      mixingFile = models.FileField(blank=True, upload_to='mixing')


      views.py



      def download(request, barcard_id):
      if request.method == 'GET':
      barcard = get_object_or_404(Barcard, pk=barcard_id)
      return render(request, 'drinks/download.html', {'barcard':barcard})
      else:
      return HttpResponseRedirect('/drinks/')


      template/drinks/download.html



      {% extends "drinks/base.html" %}
      {% block fulltitle %}Drinks{% endblock %}
      {% block content %}
      <h1>{{ barcard.name }}</h1>
      <p> Download barkort her: <a href='{{ MEDIA_URL }}{{ barcard.barcardFile.relative_path }}'>{{barcard.name}} barkort</a> </p>
      <p> Download blandekort her: <a href='{{ MEDIA_URL }}{{ barcard.mixingFile.relative_path }}'>{{barcard.name}} blandekort</a></p>
      {% endblock %}


      Right now I don't get a file, when clicking the link. Have I missed something or will I have to do something completely different?










      share|improve this question







      New contributor




      Hogfeldt is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      Is it possible to make a download link in a html template, when you have a model object available, like this?



      models.py



      class Barcard(models.Model):
      name = models.CharField(max_length=30)
      drinks = models.ManyToManyField(Drink)
      barcardFile = models.FileField(blank=True, upload_to='barcard')
      mixingFile = models.FileField(blank=True, upload_to='mixing')


      views.py



      def download(request, barcard_id):
      if request.method == 'GET':
      barcard = get_object_or_404(Barcard, pk=barcard_id)
      return render(request, 'drinks/download.html', {'barcard':barcard})
      else:
      return HttpResponseRedirect('/drinks/')


      template/drinks/download.html



      {% extends "drinks/base.html" %}
      {% block fulltitle %}Drinks{% endblock %}
      {% block content %}
      <h1>{{ barcard.name }}</h1>
      <p> Download barkort her: <a href='{{ MEDIA_URL }}{{ barcard.barcardFile.relative_path }}'>{{barcard.name}} barkort</a> </p>
      <p> Download blandekort her: <a href='{{ MEDIA_URL }}{{ barcard.mixingFile.relative_path }}'>{{barcard.name}} blandekort</a></p>
      {% endblock %}


      Right now I don't get a file, when clicking the link. Have I missed something or will I have to do something completely different?







      python django django-templates






      share|improve this question







      New contributor




      Hogfeldt is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question







      New contributor




      Hogfeldt is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question






      New contributor




      Hogfeldt is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked Nov 5 at 17:00









      Hogfeldt

      124




      124




      New contributor




      Hogfeldt is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Hogfeldt is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Hogfeldt is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          1
          down vote



          accepted










          What makes you think there is a relative_path attribute? You need to use the url attribute, which includes the media_url prefix.



          <a href='{{ barcard.barcardFile.url }}'>


          See the FileField docs.






          share|improve this answer





















          • This worked, thanks. Regarding the relative_path attribute, I was looking at someone else's code, but couldn't get it to work. Missed that they had defined a function relative_path(self). This solution thou is much more what i wanted. ;)
            – Hogfeldt
            Nov 5 at 17:20











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });






          Hogfeldt is a new contributor. Be nice, and check out our Code of Conduct.










           

          draft saved


          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53158902%2fdownload-link-in-template-when-you-have-a-model-object-with-a-filefield%23new-answer', 'question_page');
          }
          );

          Post as a guest
































          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          1
          down vote



          accepted










          What makes you think there is a relative_path attribute? You need to use the url attribute, which includes the media_url prefix.



          <a href='{{ barcard.barcardFile.url }}'>


          See the FileField docs.






          share|improve this answer





















          • This worked, thanks. Regarding the relative_path attribute, I was looking at someone else's code, but couldn't get it to work. Missed that they had defined a function relative_path(self). This solution thou is much more what i wanted. ;)
            – Hogfeldt
            Nov 5 at 17:20















          up vote
          1
          down vote



          accepted










          What makes you think there is a relative_path attribute? You need to use the url attribute, which includes the media_url prefix.



          <a href='{{ barcard.barcardFile.url }}'>


          See the FileField docs.






          share|improve this answer





















          • This worked, thanks. Regarding the relative_path attribute, I was looking at someone else's code, but couldn't get it to work. Missed that they had defined a function relative_path(self). This solution thou is much more what i wanted. ;)
            – Hogfeldt
            Nov 5 at 17:20













          up vote
          1
          down vote



          accepted







          up vote
          1
          down vote



          accepted






          What makes you think there is a relative_path attribute? You need to use the url attribute, which includes the media_url prefix.



          <a href='{{ barcard.barcardFile.url }}'>


          See the FileField docs.






          share|improve this answer












          What makes you think there is a relative_path attribute? You need to use the url attribute, which includes the media_url prefix.



          <a href='{{ barcard.barcardFile.url }}'>


          See the FileField docs.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 5 at 17:08









          Daniel Roseman

          437k40565622




          437k40565622












          • This worked, thanks. Regarding the relative_path attribute, I was looking at someone else's code, but couldn't get it to work. Missed that they had defined a function relative_path(self). This solution thou is much more what i wanted. ;)
            – Hogfeldt
            Nov 5 at 17:20


















          • This worked, thanks. Regarding the relative_path attribute, I was looking at someone else's code, but couldn't get it to work. Missed that they had defined a function relative_path(self). This solution thou is much more what i wanted. ;)
            – Hogfeldt
            Nov 5 at 17:20
















          This worked, thanks. Regarding the relative_path attribute, I was looking at someone else's code, but couldn't get it to work. Missed that they had defined a function relative_path(self). This solution thou is much more what i wanted. ;)
          – Hogfeldt
          Nov 5 at 17:20




          This worked, thanks. Regarding the relative_path attribute, I was looking at someone else's code, but couldn't get it to work. Missed that they had defined a function relative_path(self). This solution thou is much more what i wanted. ;)
          – Hogfeldt
          Nov 5 at 17:20










          Hogfeldt is a new contributor. Be nice, and check out our Code of Conduct.










           

          draft saved


          draft discarded


















          Hogfeldt is a new contributor. Be nice, and check out our Code of Conduct.













          Hogfeldt is a new contributor. Be nice, and check out our Code of Conduct.












          Hogfeldt is a new contributor. Be nice, and check out our Code of Conduct.















           


          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53158902%2fdownload-link-in-template-when-you-have-a-model-object-with-a-filefield%23new-answer', 'question_page');
          }
          );

          Post as a guest




















































































          這個網誌中的熱門文章

          Xamarin.form Move up view when keyboard appear

          Post-Redirect-Get with Spring WebFlux and Thymeleaf

          Anylogic : not able to use stopDelay()