How to get the name and url of an uploaded file?

I am using the following files:

settings.py:

    MEDIA_URL = '/data/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'data')

urls.py:
    urlpatterns = [
        path("photo/upload", views.upload_pic, name="uploadpic ")
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

models.py:

    class Pic(models.Model):
        name = models.CharField(max_length=255)
        photo = models.FileField(upload_to="data/media/%Y/%m/%d")
        def __str__(self):
            return self.url
        def path(self):
            return self.url

forms.py:

    from django import forms
    class DocumentForm(forms.Form):
        docfile = forms.FileField(
            label='Select a file',
            help_text='any valid file'
        )

views.py:

    def upload_pic(request):
        documents = Pic.objects.all()
        import uuid
        name = uuid.uuid4().hex[:6].upper()
        if request.method == 'POST':
            form = DocumentForm(request.POST, request.FILES)
            if form.is_valid():
                print(request.FILES)
                newdoc = Pic(name=name, photo=request.FILES['docfile'])
                newdoc.save()
                return render(request, 'clinic/list.html', {'documents':
documents, 'form': form, 'msg': 'success'})
        else:
            form = DocumentForm()  # A empty, unbound form
        return render(request, 'clinic/list.html', {'documents': documents,
'form': form})

template: clinic/list.html

    {% extends 'clinic/newbase.html' %}
    {% load static %}
    {% block content %}
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <input type="file" name="myfile">
        <button type="submit">Upload</button>
    </form>
    {% if uploaded_file_url %}
    <p>File uploaded at: <a href="{{ uploaded_file_url }}">{{
uploaded_file_url }}</a></p>
    {% endif %}
    <p><a href="{% url 'index' %}">Return to home</a></p>
    {% endblock %}

However in the rendered html, the urls are blank:

    <body cz-shortcut-listen="true">
        <!-- List of uploaded documents -->
        <ul>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
        </ul>
        <!-- Upload form. Note enctype attribute! -->
        <form action="/clinic/photo/upload" method="post"
enctype="multipart/form-data">
            <input type="hidden" name="csrfmiddlewaretoken"
value="EYTXeSgaP00jHNFhyPvgomYVyHB8FpTEXm5T4WrXCPyjpqkSrO3bEtiGQqV5iqeL">
            <p></p>
            <p><label for="id_docfile">Select a file:</label> max. 42
megabytes</p>
            <p>
                <input type="file" name="docfile" required=""
id="id_docfile">
            </p>
            <p><input type="submit" value="Upload"></p>
        </form>
    <iframe frameborder="0" scrolling="no" style="background-color:
transparent; border: 0px; display: none;"></iframe><div
id="GOOGLE_INPUT_CHEXT_FLAG" input=""
input_stat="{&quot;tlang&quot;:true,&quot;tsbc&quot;:true,&quot;pun&quot;:true,&quot;mk&quot;:true,&quot;ss&quot;:true}"
style="display: none;"></div></body>

    How can I get the media name and url in the rendered template?

Sincerely yours,

Joel G Mathew

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAA%3Diw__rhuqts1vsTOswEAXSwExa37S9Fdgf93JL%3DnRh%3DSAjyw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to