Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 15.02.2020, 18:50   #11
Evgeny_Chet
Пользователь
 
Регистрация: 20.01.2020
Сообщений: 17
По умолчанию

Хотел еще спросить. Получается для хранения данных в джанго и последующего обращения к записям в базе данных необходимо создать модель. Примерно такого вида:

class JsonData(models.Model):
Name = models.CharField(max_length=50)
ID = models.CharField(max_length=50)
Content = models.TextField(max_length=50, db_index=True)

потом записать данные в базу данных методом пост и сохранить их там
т.е при запросе к базе данных по имени и id пользователю возвратятся данные по конкретной записи из столбца Content.
Пока что через shell ввел данные и вывел по запросу в шаблоне список записей...
1) Возник вопрос как занести данные в базу... я так понимаю перебрать нужно весь список поэлементно в цикле в методе во view...
2) Правильно ли делать поле контент и вкладывать туда все данные?
Evgeny_Chet вне форума Ответить с цитированием
Старый 17.02.2020, 12:08   #12
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 531
По умолчанию

В целом нужно прочитать про ORM (Object-Relational Mapping). Тогда многие вопросы отпадут.
https://tutorial.djangogirls.org/ru/django_orm/
Arkuz вне форума Ответить с цитированием
Старый 21.02.2020, 20:35   #13
Evgeny_Chet
Пользователь
 
Регистрация: 20.01.2020
Сообщений: 17
По умолчанию

Прочитал материал. Сделал так чтобы данные из файла записывались в базу данных. Не получается одна вещица:
Хочу чтобы пользователь вводил данные в textarea. Только не могу понять как передать эти данные через класс forms с html страницы и как потом их лучше проверить. Понял что данные Form проверяет и если введены значения то погружает их в cleaned data.
В моем случае вводимые данные json строка. Как а главное где ее проверять?
Спасибо.
Evgeny_Chet вне форума Ответить с цитированием
Старый 23.02.2020, 18:41   #14
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 531
По умолчанию

https://djbook.ru/rel1.7/topics/forms/
Arkuz вне форума Ответить с цитированием
Старый 24.02.2020, 21:53   #15
Evgeny_Chet
Пользователь
 
Регистрация: 20.01.2020
Сообщений: 17
По умолчанию

Добрый вечер. Спасибо. Данные с формы считал. Данные в форму заходят. Теперь не знаю как лучше их проверить и выловить ошибку.

На уровне формы данные проверятся только на то внесены они или нет. Нерозумим как проверить данные... Нужно это делать на уровне формы или на уровне view.
Например, в моем случае данные должны вводиться в таком виде:
[
{
"Какое-то название": {
"Какой-то id": 1,
"Какие-то свойства": "Barva"
}
}....
]
Данные потом строкой заходят в обработку в Json декодер. Там же если они не правильные и не представляют json строку возбуждается исключение в модуле JSON. Может быть нужно там ловить исключение с ошибкой и потом вратить пользователя на форму и выдавать ошибку о неправильно введенных данных.
Подскажите пожалуйста
Вот код:
Код:
class JsonFormnew(forms.Form):
    JsonDatoForread = forms.CharField( required=True, widget =forms.Textarea(attrs=

                                                                             {'placeholder': 'Description',
                                                                                 'rows': 15}))
Код:
class JsonCreatenew(View):
        def get(self, request):
            form = JsonFormnew()
            return render(request, 'bboard/post2.html', context={'form': form})

        def post(self, request):
            form = JsonFormnew(request.POST) # get data from form
            if form.is_valid():
                finaldict = dict.fromkeys(['AttributeName', 'AttributeID', 'AttributeContent']) # create empty dictionary
                StringJson = form.cleaned_data['JsonDatoForread'] # Get the Json string
                distros_dict = json.loads(StringJson)  # Encoding Json string
                for distro in distros_dict:           #  iterating list
                    for key in distro:                  #iterating dictionary
                        finaldict['AttributeName'] = key            # add key in dict
                        finaldict['AttributeID'] = distro[key]['id']  # add id in dict
                        for key2 in distro[key]:                    # iterating dict of content
                            finaldict['AttributeContent'] = distro[key]  # add content in dict

                        JsonData.objects.create(AttributeName=finaldict['AttributeName'], # add data to database
                        AttributeID=finaldict['AttributeID'],
                        AttributeContent=finaldict['AttributeContent'])

            else:
                print(form.errors)

            posts = JsonData.objects.all()
            return render(request, 'bboard/post2.html', context={'posts': posts})
Evgeny_Chet вне форума Ответить с цитированием
Старый 25.02.2020, 11:48   #16
Evgeny_Chet
Пользователь
 
Регистрация: 20.01.2020
Сообщений: 17
По умолчанию

Evgeny_Chet,
Сделал такую валидацию в forms
Код:
def clean_JsonDatoForread(self):
        Json_passed = self.cleaned_data.get('JsonDatoForread')
        try:
            p = json.loads(Json_passed)
        except:
            raise ValidationError('message is not a jsonstring')
        return Json_passed
Не уверен, что так правильно.
Evgeny_Chet вне форума Ответить с цитированием
Старый 28.02.2020, 00:40   #17
Evgeny_Chet
Пользователь
 
Регистрация: 20.01.2020
Сообщений: 17
По умолчанию Перезапись данных в базе данных

Всем привет. Получилось сделать так чтобы данные заносились в базу данных.
Код:
JsonData.objects.create(AttributeName=finaldict['AttributeName'], # add data to database
                        AttributeID=finaldict['AttributeID'],
                        AttributeContent=finaldict['AttributeContent'])
данные добавляются в базу данных.
Как сделать перезапись данных?

Т.Е. я так понимаю должна быть проверка на то, что таблица не пустая а если таблица не пустая то данные удаляются , а новые данные записываются.
Полагаю нужно использовать sql запросы. Не могу найти подходящей информации. Подсобите пожалуйста.
Evgeny_Chet вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Django/Python разработчик milkerbell Фриланс 0 09.11.2013 03:07


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS