0

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?

1
  • Take a look at the Django REST Framework. You'll need to create an API for the CRUD operations, then you can use get or post http requests to get and update data on the server. Commented Jul 29, 2018 at 15:33

1 Answer 1

1

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

Sign up to request clarification or add additional context in comments.

1 Comment

Upvote for this line And no you do not need to make a whole rest API to do this as was mentioned above

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.