user8674512
user8674512

Reputation:

Django; How can I connect javascript to db?

I'm doing project using Django and now I am trying to adapt js into the project. I'm not familiar with js and I'm wondering how I can manipulate db using js. For example, I want to use js for creating delete function. Currently, when I push delete button, I jump into the other page and then I have to push delete button again. But what I want to do is push the delete button and then pop up the window to confirm and delete something. How can I adapt js into Django in general?

Here is current way

first I have to push the button and jump into another page

<button style="display: inline;" onclick="window.location='{% url 'blog:delete_entry' entry_id=entry.id %}'" class="btn btn-link">Delete</button>

and then I have to push a button on the other page again.

<button type="submit" class="btn btn-outline-danger" id="delete-button">Delete</button>

Here is views.py

def delete_entry(request, entry_id):

    entry = Entry.objects.get(id=entry_id)

    if request.method != 'POST':
        form = EditEntryForm(instance=entry)
    else:
        form = EditEntryForm(instance=entry)
        entry.delete()
        return HttpResponseRedirect(reverse_lazy       ('blog:my_entry'))
    return render(request, 'blog/delete_entry.html', {'entry': entry, 'form': form})

Anyone who can give me tips?

Upvotes: 0

Views: 1359

Answers (1)

user9915877
user9915877

Reputation:

I could be wrong, but I typically only use javascript for the front-end. You are doing the back-end in Python with the Django frame work... it would be foolish not to use Python to manipulate the DB. Here is a template for mysql although I used Flask...

https://github.com/rootVIII/flask_mysql_template/blob/master/template.py

Even though it's Flask and not Django, the idea is still the same.

Your button should (or any form button) should have a Django endpoint associated with it (basically a path to the Django function). That way when the button is pressed, the Django/Python code on the back-end is ran. There you can perform your logic and database business in the Python code on the back-end.

Sorry for the Flask examples... but here is an endpoint for Flask in the index.html file from the above link... notice how the form action is associated with an endpoint /login_register

/login_register is what is ran when the form input button is pressed. It is a function on the back-end... in your case it might be named delete_entry

<form action = /login_register method="POST" id="userform">
    <fieldset>
        <!-- some labels and input values here  -->
        <input type="submit" name="submit" value="login/register" id="submit"/><br>
    </fieldset>
</form>

So basically what I'm saying is that your button should not call Javascript. It should call a Python function on the back-end. And no you do not need to make a whole rest API to do this as was mentioned above

Upvotes: 1

Related Questions