Редактирование объекта с формой HTML вместо формы модели Django - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь редактировать свои объекты, используя форму HTML вместо формы модели Django. Мне нужно знать, как сделать вид для этого ( См. Мой неполный вид ниже жирным шрифтом )

Введение: У меня есть очень простая HTML-форма (невидимая) в правом столбце моего Index.html. когда пользователь нажимает кнопку Locate me. Форма автоматически заполняет данные о широте и долготе пользователей и нажимает кнопку «Отправить» (пользователь не видит форму). Я использую JQuery для достижения этого

    <form method="post" action="#">
        {% csrf_token %}
        <input id="jsLat" type="text" placeholder="latittude" name="LAT">
        <input id="jsLon" type="text" placeholder="longitude" name="LON">
        <button type="submit" id="submit">Submit</button>
    </form>

enter image description here

Мои модели

class UserLocation(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    lat = models.FloatField(blank=True, null=True)
    lon = models.FloatField(blank=True, null=True)
    point = models.PointField(srid=4326, default='SRID=4326;POINT(0.0 0.0)')

Мой неполный обзор (мне нужна помощь для завершения)

@login_required
def edit_location(request):
    if request.method == 'POST':
      form = ??????????? #don't know how to call the HTML form   
        user = request.user              
        lat = request.POST.get('LAT') #lat is a field in the model see above
        lon = request.POST.get('LON') #lon is a field in the model see above
        form.save(commit=False) #Not sure if I can use this with HTML form
        point = lat (some operation) lon 
        form.save()
     return redirect("home") 

Также в форме HTML action использовать ли URL-адрес, созданный для этого представления

1 Ответ

0 голосов
/ 31 августа 2018

Вам не нужна форма в вашем представлении, если вы вручную выбираете значения из request.POST. Просто создайте или измените экземпляр модели напрямую.

Вы можете создать класс формы, который соответствует тому, который вы пишете вручную для проверки и т. Д. При получении данных (но без использования его для отображения формы). Скорее всего, вам потребуется добавить {% csrf_token %} в html-форму (если вы сделаете это (или отметите, что csrf освобожден от просмотра).

urls.py

...
(r'^/my/special/url/', views.edit_location),

views.py (ручное извлечение параметров request.POST и обновление модели):

@login_required
def edit_location(request):
    if request.method == 'POST':
        #location,created = UserLocation.objects.get_or_create(user=request.user)
        location = UserLocation.objects.get_or_create(user=request.user)[0]
        location.lat = request.POST.get('LAT') #lat is a field in the model see above
        location.lon = request.POST.get('LON') #lon is a field in the model see above
        location.point = lat (some operation) lon 
        location.save()
     return redirect("home") 

Форма:

<form method="post" action="/my/special/url/">
    <input id="jsLat" type="text" placeholder="latittude" name="LAT">
    <input id="jsLon" type="text" placeholder="longitude" name="LON">
    <button type="submit" id="submit">Submit</button>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...