Перейти к публикации
  • Сейчас на странице   Всего пользователей: 2   (0 пользователей, 2 гостя)

Rooster

Программирование, т. 8

  

315 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

 

ну есть в твоем могучем апи альфа банка описание всех банковских продуктов хотя бы?

 

мы тут парсеры обсуждаем, а ты вкидываешь как доказательство своей правоты исключительно апи для зарегистрированных юзеров предназначенное для совершения платежей через процессинг банка

 

причем тут вообще парсинг, это невозможно делать кроме как через апи

Это не отменяет того , что то что скинул Милки Вей это именно апи

 

еще раз, это апи процессинга, а не апи для чтения данных

 

банку нахуй не надо ничего отдавать на чтение другим, никто не будет бесплатно делать ему рекламу, а упаковывать в апи не поддающиеся логике сведения это только геморрой себе на жопу

 

курсы и адреса банкоматов/отделений это максимум, тк могут использоваться какими-нибудь яндекс.картами или еще какой хуйней

всё остальное либо вообще никому нельзя показывать, либо хуй покажешь


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

с рофлов про шифрование норм поржал

Ares. и Dimidrol1 понравилось это

Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

 


всё остальное либо вообще никому нельзя показывать, либо хуй покажешь

бля ну понятно есть публичное апи, есть приватное апи

приватное апи - считай апи которое только после авторизации ты можешь видеть => зная логпасс ты можешь через апи авторизоваться и тянуть всю инфу => но если ты не по своим данным делаешь, то тогда бутылка

в том примере курсы валют - публичное апи должно быть и странно что его нет


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение

 

 

гайз, а есть кто шарит в django?  :hmm:  а то недавно начал изучать, взял чужой код, вроде все поправил, и при добавлении через админ панель ловлю ошибки

Request Method: POST

Request URL: http://127.0.0.1:8000/admin/films/film/add/

 

Django Version: 2.1

Python Version: 3.7.0

Installed Applications:

['django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'films',

'kinouser',

'otziv',

'guest_otziv']

Installed Middleware:

['django.middleware.security.SecurityMiddleware',

'django.contrib.sessions.middleware.SessionMiddleware',

'django.middleware.common.CommonMiddleware',

'django.middleware.csrf.CsrfViewMiddleware',

'django.contrib.auth.middleware.AuthenticationMiddleware',

'django.contrib.messages.middleware.MessageMiddleware',

'django.middleware.clickjacking.XFrameOptionsMiddleware']

 

 

 

Traceback:

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\exception.py" in inner

34. response = get_response(request)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response

126. response = self.process_exception_by_middleware(e, request)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response

124. response = wrapped_callback(request, *callback_args, **callback_kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in wrapper

607. return self.admin_site.admin_view(view)(*args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\decorators.py" in _wrapped_view

142. response = view_func(request, *args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\views\decorators\cache.py" in _wrapped_view_func

44. response = view_func(request, *args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\sites.py" in inner

223. return view(request, *args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in add_view

1647. return self.changeform_view(request, None, form_url, extra_context)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\decorators.py" in _wrapper

45. return bound_method(*args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\decorators.py" in _wrapped_view

142. response = view_func(request, *args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in changeform_view

1536. return self._changeform_view(request, object_id, form_url, extra_context)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in _changeform_view

1575. self.save_model(request, new_object, form, not add)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in save_model

1094. obj.save()

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in save

717. force_update=force_update, update_fields=update_fields)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in save_base

747. updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in _save_table

830. result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in _do_insert

868. using=using, raw=raw)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\manager.py" in manager_method

82. return getattr(self.get_queryset(), name)(*args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\query.py" in _insert

1133. return query.get_compiler(using=using).execute_sql(return_id)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql

1284. for sql, params in self.as_sql():

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in as_sql

1237. for obj in self.query.objs

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in

1237. for obj in self.query.objs

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in

1236. [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in pre_save_val

1188. return field.pre_save(obj, add=True)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\files.py" in pre_save

288. file.save(file.name, file.file, save=False)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\files.py" in save

87. self.name = self.storage.save(name, content, max_length=self.field.max_length)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in save

48. name = self.get_available_name(name, max_length=max_length)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in get_available_name

72. while self.exists(name) or (max_length and len(name) > max_length):

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in exists

308. return os.path.exists(self.path(name))

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in path

321. return safe_join(self.location, name)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\functional.py" in __get__

37. res = instance.__dict__[self.name] = self.func(instance)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in location

201. return os.path.abspath(self.base_location)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\ntpath.py" in abspath

521. path = os.fspath(path)

 

Exception Type: TypeError at /admin/films/film/add/

Exception Value: expected str, bytes or os.PathLike object, not list

 

он же тебе пишет что нет так

TypeError

 

код админки и модели в студию.

 

Судя по всему ты List запихал в path

 

models

 

from django.core.validators import validate_comma_separated_integer_list

from django.db import models

from django.forms import ValidationError

 

import datetime

 

 

# Create your models here.

 

class Zhanr(models.Model):

name = models.CharField(max_length=15)

 

def __str__(self):

return self.name

 

 

class Film(models.Model):

name = models.CharField(max_length=50)

secondname = models.CharField(max_length=50)

 

opisanie = models.TextField()

dlitelnost = models.FloatField()

format = models.CharField(max_length=3)

proizvodstvo = models.CharField(max_length=20)

rezhiser = models.CharField(max_length=50)

actors = models.TextField()

year = models.IntegerField()

image = models.ImageField(

upload_to="media/films",

height_field="image_height",

width_field="image_width"

)

image_height = models.PositiveIntegerField(

null=True,

blank=True,

editable=False,

default="525"

)

image_width = models.PositiveIntegerField(

null=True,

blank=True,

editable=False,

default="260"

)

trailer = models.URLField()

prokat = models.DateField(blank=True)

zhanr = models.ManyToManyField(Zhanr)

 

def __unicode__(self):

return self.name

 

def __str__(self):

return self.name

 

def zhanr_get(self):

a = ''

for i in self.zhanr.all():

a += i.name + ','

 

return a[:-1]

 

 

class Seans(models.Model):

date = models.DateField()

time = models.CharField(max_length=30)

film = models.ForeignKey('film', models.PROTECT)

price = models.CharField(validators=[validate_comma_separated_integer_list],max_length=100)

 

def __unicode__(self):

name = self.film + "," + str(self.date) + " " + str(self.time)

return name

 

def __str__(self):

name = self.film.name + ", " + str(self.date) + " " + str(self.time)[:5]

return name

 

def film_name_get(self):

return self.film.name

 

def save(self, *args, **kwargs):

for seans in Seans.objects.filter(date=getattr(self, 'date')):

 

time1 = datetime.datetime.combine(

getattr(self, 'date'),

datetime.datetime.strptime(

getattr(self, 'time'),

'%H:%M').time()

)

time2 = datetime.datetime.now()

 

if getattr(self, 'time') == seans.time or time1 < time2:

raise ValidationError('Выбрано неподходящее время для сеанса.')

 

super(Seans, self).save(*args, **kwargs)

 

 

class Bron(models.Model):

seans_id = models.ForeignKey('Seans',models.PROTECT)

forname = models.CharField(max_length=20)

row = models.IntegerField(default=0)

seat = models.IntegerField(default=0)

price = models.IntegerField(default=0)

 

def __unicode__(self):

return self.forname

 

def __str__(self):

return self.forname

 

def seans_get(self):

return self.seans_id.film.name

 

def seans_date_get(self):

return self.seans_id.date

 

def seans_time_get(self):

return self.seans_id.time

 

 

class Bilet(models.Model):

seans_id = models.ForeignKey('Seans',models.PROTECT)

row = models.IntegerField(default=0)

seat = models.IntegerField(default=0)

price = models.IntegerField(default=0)

 

def save(self, *args, **kwargs):

sell, created = Sell.objects.get_or_create(seans_id=getattr(self, 'seans_id'))

sell.kol_bil += 1

sell.summa += int(getattr(self, 'price'))

sell.save()

 

super(Bilet, self).save(*args, **kwargs)

 

def __unicode__(self):

return str(self.id)

 

def __str__(self):

return str(self.id)

 

def seans_get(self):

return self.seans_id.film.name

 

def seans_date_get(self):

return self.seans_id.date

 

def seans_time_get(self):

return self.seans_id.time

 

 

class Sell(models.Model):

seans_id = models.ForeignKey('Seans',models.PROTECT)

kol_bil = models.IntegerField(default=0)

summa = models.IntegerField(default=0)

 

def __unicode__(self):

return str(self.seans_id)

 

def __str__(self):

return str(self.seans_id)

 

def get_film_name(self):

return self.seans_id.film.name

 

def get_seans_date(self):

return self.seans_id.date

 

def get_seans_time(self):

return self.seans_id.time

 

admin

from django.contrib import admin

from django.contrib.admin import DateFieldListFilter

 

from films.models import *

 

 

# Register your models here.

 

@admin.register(Zhanr)

class ZhanrAdmin(admin.ModelAdmin):

list_display = ('name',)

search_fields = ('name',)

 

 

@admin.register(Bilet)

class BiletAdmin(admin.ModelAdmin):

list_display = ('id', 'seans_get', 'seans_date_get', 'seans_time_get', 'row', 'seat', 'price',)

search_fields = ('seans_id__film__name',)

list_filter = (

('seans_id__date', DateFieldListFilter),

)

 

 

@admin.register(Film)

class FilmAdmin(admin.ModelAdmin):

list_display = ('name', 'proizvodstvo', 'year', 'rezhiser', 'zhanr_get',)

search_fields = ('name', 'proizvodstvo', 'year', 'rezhiser', 'zhanr__name')

 

 

@admin.register(Seans)

class SeansAdmin(admin.ModelAdmin):

list_display = ('id', 'film', 'date', 'time', 'price',)

search_fields = ('film__name',)

list_filter = (

('date', DateFieldListFilter),

)

fieldsets = ((

None, {

'fields': ('date', 'time', 'film', 'price')

}),

)

 

def formfield_for_foreignkey(self, db_field, request, **kwargs):

if db_field.name == "film":

kwargs["queryset"] = Film.objects.filter(prokat__lte=datetime.datetime.today().date())

return super(SeansAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

 

 

@admin.register(Bron)

class BronAdmin(admin.ModelAdmin):

list_display = ('forname', 'seans_get', 'seans_date_get', 'seans_time_get', 'row', 'seat', 'price')

search_fields = ('seans_id__film__name', 'forname',)

list_filter = (

('seans_id__date', DateFieldListFilter),

)

 

 

@admin.register(Sell)

class SellAdmin(admin.ModelAdmin):

list_display = ('get_film_name', 'get_seans_date', 'get_seans_time', 'kol_bil', 'summa',)

search_fields = ('seans_id__film__name', 'seans_id__date',)

list_filter = (

('seans_id__date', DateFieldListFilter),

)

 

 

пизда тут говнокода, поле прайс странное и валидаторы странные.

Отключи у модели Film филд Image и посмотри повторяется ли ошибка.


 

<< твой комментарий очень важен для форума.

Поделиться сообщением


Ссылка на сообщение

 

 

пизда тут говнокода

как и в любом джанго проекте :nate: ​

вообще использовать джангу в 2к18

Поделиться сообщением


Ссылка на сообщение

 

 

 

гайз, а есть кто шарит в django?  :hmm:  а то недавно начал изучать, взял чужой код, вроде все поправил, и при добавлении через админ панель ловлю ошибки

Request Method: POST

Request URL: http://127.0.0.1:8000/admin/films/film/add/

 

Django Version: 2.1

Python Version: 3.7.0

Installed Applications:

['django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'films',

'kinouser',

'otziv',

'guest_otziv']

Installed Middleware:

['django.middleware.security.SecurityMiddleware',

'django.contrib.sessions.middleware.SessionMiddleware',

'django.middleware.common.CommonMiddleware',

'django.middleware.csrf.CsrfViewMiddleware',

'django.contrib.auth.middleware.AuthenticationMiddleware',

'django.contrib.messages.middleware.MessageMiddleware',

'django.middleware.clickjacking.XFrameOptionsMiddleware']

 

 

 

Traceback:

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\exception.py" in inner

34. response = get_response(request)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response

126. response = self.process_exception_by_middleware(e, request)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response

124. response = wrapped_callback(request, *callback_args, **callback_kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in wrapper

607. return self.admin_site.admin_view(view)(*args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\decorators.py" in _wrapped_view

142. response = view_func(request, *args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\views\decorators\cache.py" in _wrapped_view_func

44. response = view_func(request, *args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\sites.py" in inner

223. return view(request, *args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in add_view

1647. return self.changeform_view(request, None, form_url, extra_context)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\decorators.py" in _wrapper

45. return bound_method(*args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\decorators.py" in _wrapped_view

142. response = view_func(request, *args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in changeform_view

1536. return self._changeform_view(request, object_id, form_url, extra_context)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in _changeform_view

1575. self.save_model(request, new_object, form, not add)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in save_model

1094. obj.save()

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in save

717. force_update=force_update, update_fields=update_fields)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in save_base

747. updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in _save_table

830. result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in _do_insert

868. using=using, raw=raw)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\manager.py" in manager_method

82. return getattr(self.get_queryset(), name)(*args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\query.py" in _insert

1133. return query.get_compiler(using=using).execute_sql(return_id)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql

1284. for sql, params in self.as_sql():

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in as_sql

1237. for obj in self.query.objs

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in

1237. for obj in self.query.objs

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in

1236. [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in pre_save_val

1188. return field.pre_save(obj, add=True)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\files.py" in pre_save

288. file.save(file.name, file.file, save=False)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\files.py" in save

87. self.name = self.storage.save(name, content, max_length=self.field.max_length)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in save

48. name = self.get_available_name(name, max_length=max_length)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in get_available_name

72. while self.exists(name) or (max_length and len(name) > max_length):

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in exists

308. return os.path.exists(self.path(name))

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in path

321. return safe_join(self.location, name)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\functional.py" in __get__

37. res = instance.__dict__[self.name] = self.func(instance)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in location

201. return os.path.abspath(self.base_location)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\ntpath.py" in abspath

521. path = os.fspath(path)

 

Exception Type: TypeError at /admin/films/film/add/

Exception Value: expected str, bytes or os.PathLike object, not list

 

он же тебе пишет что нет так

TypeError

 

код админки и модели в студию.

 

Судя по всему ты List запихал в path

 

models

 

from django.core.validators import validate_comma_separated_integer_list

from django.db import models

from django.forms import ValidationError

 

import datetime

 

 

# Create your models here.

 

class Zhanr(models.Model):

name = models.CharField(max_length=15)

 

def __str__(self):

return self.name

 

 

class Film(models.Model):

name = models.CharField(max_length=50)

secondname = models.CharField(max_length=50)

 

opisanie = models.TextField()

dlitelnost = models.FloatField()

format = models.CharField(max_length=3)

proizvodstvo = models.CharField(max_length=20)

rezhiser = models.CharField(max_length=50)

actors = models.TextField()

year = models.IntegerField()

image = models.ImageField(

upload_to="media/films",

height_field="image_height",

width_field="image_width"

)

image_height = models.PositiveIntegerField(

null=True,

blank=True,

editable=False,

default="525"

)

image_width = models.PositiveIntegerField(

null=True,

blank=True,

editable=False,

default="260"

)

trailer = models.URLField()

prokat = models.DateField(blank=True)

zhanr = models.ManyToManyField(Zhanr)

 

def __unicode__(self):

return self.name

 

def __str__(self):

return self.name

 

def zhanr_get(self):

a = ''

for i in self.zhanr.all():

a += i.name + ','

 

return a[:-1]

 

 

class Seans(models.Model):

date = models.DateField()

time = models.CharField(max_length=30)

film = models.ForeignKey('film', models.PROTECT)

price = models.CharField(validators=[validate_comma_separated_integer_list],max_length=100)

 

def __unicode__(self):

name = self.film + "," + str(self.date) + " " + str(self.time)

return name

 

def __str__(self):

name = self.film.name + ", " + str(self.date) + " " + str(self.time)[:5]

return name

 

def film_name_get(self):

return self.film.name

 

def save(self, *args, **kwargs):

for seans in Seans.objects.filter(date=getattr(self, 'date')):

 

time1 = datetime.datetime.combine(

getattr(self, 'date'),

datetime.datetime.strptime(

getattr(self, 'time'),

'%H:%M').time()

)

time2 = datetime.datetime.now()

 

if getattr(self, 'time') == seans.time or time1 < time2:

raise ValidationError('Выбрано неподходящее время для сеанса.')

 

super(Seans, self).save(*args, **kwargs)

 

 

class Bron(models.Model):

seans_id = models.ForeignKey('Seans',models.PROTECT)

forname = models.CharField(max_length=20)

row = models.IntegerField(default=0)

seat = models.IntegerField(default=0)

price = models.IntegerField(default=0)

 

def __unicode__(self):

return self.forname

 

def __str__(self):

return self.forname

 

def seans_get(self):

return self.seans_id.film.name

 

def seans_date_get(self):

return self.seans_id.date

 

def seans_time_get(self):

return self.seans_id.time

 

 

class Bilet(models.Model):

seans_id = models.ForeignKey('Seans',models.PROTECT)

row = models.IntegerField(default=0)

seat = models.IntegerField(default=0)

price = models.IntegerField(default=0)

 

def save(self, *args, **kwargs):

sell, created = Sell.objects.get_or_create(seans_id=getattr(self, 'seans_id'))

sell.kol_bil += 1

sell.summa += int(getattr(self, 'price'))

sell.save()

 

super(Bilet, self).save(*args, **kwargs)

 

def __unicode__(self):

return str(self.id)

 

def __str__(self):

return str(self.id)

 

def seans_get(self):

return self.seans_id.film.name

 

def seans_date_get(self):

return self.seans_id.date

 

def seans_time_get(self):

return self.seans_id.time

 

 

class Sell(models.Model):

seans_id = models.ForeignKey('Seans',models.PROTECT)

kol_bil = models.IntegerField(default=0)

summa = models.IntegerField(default=0)

 

def __unicode__(self):

return str(self.seans_id)

 

def __str__(self):

return str(self.seans_id)

 

def get_film_name(self):

return self.seans_id.film.name

 

def get_seans_date(self):

return self.seans_id.date

 

def get_seans_time(self):

return self.seans_id.time

 

admin

from django.contrib import admin

from django.contrib.admin import DateFieldListFilter

 

from films.models import *

 

 

# Register your models here.

 

@admin.register(Zhanr)

class ZhanrAdmin(admin.ModelAdmin):

list_display = ('name',)

search_fields = ('name',)

 

 

@admin.register(Bilet)

class BiletAdmin(admin.ModelAdmin):

list_display = ('id', 'seans_get', 'seans_date_get', 'seans_time_get', 'row', 'seat', 'price',)

search_fields = ('seans_id__film__name',)

list_filter = (

('seans_id__date', DateFieldListFilter),

)

 

 

@admin.register(Film)

class FilmAdmin(admin.ModelAdmin):

list_display = ('name', 'proizvodstvo', 'year', 'rezhiser', 'zhanr_get',)

search_fields = ('name', 'proizvodstvo', 'year', 'rezhiser', 'zhanr__name')

 

 

@admin.register(Seans)

class SeansAdmin(admin.ModelAdmin):

list_display = ('id', 'film', 'date', 'time', 'price',)

search_fields = ('film__name',)

list_filter = (

('date', DateFieldListFilter),

)

fieldsets = ((

None, {

'fields': ('date', 'time', 'film', 'price')

}),

)

 

def formfield_for_foreignkey(self, db_field, request, **kwargs):

if db_field.name == "film":

kwargs["queryset"] = Film.objects.filter(prokat__lte=datetime.datetime.today().date())

return super(SeansAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

 

 

@admin.register(Bron)

class BronAdmin(admin.ModelAdmin):

list_display = ('forname', 'seans_get', 'seans_date_get', 'seans_time_get', 'row', 'seat', 'price')

search_fields = ('seans_id__film__name', 'forname',)

list_filter = (

('seans_id__date', DateFieldListFilter),

)

 

 

@admin.register(Sell)

class SellAdmin(admin.ModelAdmin):

list_display = ('get_film_name', 'get_seans_date', 'get_seans_time', 'kol_bil', 'summa',)

search_fields = ('seans_id__film__name', 'seans_id__date',)

list_filter = (

('seans_id__date', DateFieldListFilter),

)

 

 

пизда тут говнокода, поле прайс странное и валидаторы странные.

Отключи у модели Film филд Image и посмотри повторяется ли ошибка.

ошибка все также вылазиет, я это уже просто пробывал

да мне из этого говно кода надо было понять как создавать фильм  и добавлять к  нему места + сеансы  :lol:  

Поделиться сообщением


Ссылка на сообщение

 

пизда тут говнокода

как и в любом проекте :nate: ​

вообще использовать джангу в 2к18

 

фиксед

 

 

 

 

гайз, а есть кто шарит в django?  :hmm:  а то недавно начал изучать, взял чужой код, вроде все поправил, и при добавлении через админ панель ловлю ошибки

Request Method: POST

Request URL: http://127.0.0.1:8000/admin/films/film/add/

 

Django Version: 2.1

Python Version: 3.7.0

Installed Applications:

['django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'films',

'kinouser',

'otziv',

'guest_otziv']

Installed Middleware:

['django.middleware.security.SecurityMiddleware',

'django.contrib.sessions.middleware.SessionMiddleware',

'django.middleware.common.CommonMiddleware',

'django.middleware.csrf.CsrfViewMiddleware',

'django.contrib.auth.middleware.AuthenticationMiddleware',

'django.contrib.messages.middleware.MessageMiddleware',

'django.middleware.clickjacking.XFrameOptionsMiddleware']

 

 

 

Traceback:

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\exception.py" in inner

34. response = get_response(request)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response

126. response = self.process_exception_by_middleware(e, request)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response

124. response = wrapped_callback(request, *callback_args, **callback_kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in wrapper

607. return self.admin_site.admin_view(view)(*args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\decorators.py" in _wrapped_view

142. response = view_func(request, *args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\views\decorators\cache.py" in _wrapped_view_func

44. response = view_func(request, *args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\sites.py" in inner

223. return view(request, *args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in add_view

1647. return self.changeform_view(request, None, form_url, extra_context)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\decorators.py" in _wrapper

45. return bound_method(*args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\decorators.py" in _wrapped_view

142. response = view_func(request, *args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in changeform_view

1536. return self._changeform_view(request, object_id, form_url, extra_context)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in _changeform_view

1575. self.save_model(request, new_object, form, not add)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\options.py" in save_model

1094. obj.save()

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in save

717. force_update=force_update, update_fields=update_fields)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in save_base

747. updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in _save_table

830. result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in _do_insert

868. using=using, raw=raw)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\manager.py" in manager_method

82. return getattr(self.get_queryset(), name)(*args, **kwargs)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\query.py" in _insert

1133. return query.get_compiler(using=using).execute_sql(return_id)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql

1284. for sql, params in self.as_sql():

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in as_sql

1237. for obj in self.query.objs

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in

1237. for obj in self.query.objs

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in

1236. [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in pre_save_val

1188. return field.pre_save(obj, add=True)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\files.py" in pre_save

288. file.save(file.name, file.file, save=False)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\files.py" in save

87. self.name = self.storage.save(name, content, max_length=self.field.max_length)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in save

48. name = self.get_available_name(name, max_length=max_length)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in get_available_name

72. while self.exists(name) or (max_length and len(name) > max_length):

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in exists

308. return os.path.exists(self.path(name))

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in path

321. return safe_join(self.location, name)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\functional.py" in __get__

37. res = instance.__dict__[self.name] = self.func(instance)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\files\storage.py" in location

201. return os.path.abspath(self.base_location)

 

File "C:\Users\ZetLite\AppData\Local\Programs\Python\Python37-32\lib\ntpath.py" in abspath

521. path = os.fspath(path)

 

Exception Type: TypeError at /admin/films/film/add/

Exception Value: expected str, bytes or os.PathLike object, not list

 

он же тебе пишет что нет так

TypeError

 

код админки и модели в студию.

 

Судя по всему ты List запихал в path

 

models

 

from django.core.validators import validate_comma_separated_integer_list

from django.db import models

from django.forms import ValidationError

 

import datetime

 

 

# Create your models here.

 

class Zhanr(models.Model):

name = models.CharField(max_length=15)

 

def __str__(self):

return self.name

 

 

class Film(models.Model):

name = models.CharField(max_length=50)

secondname = models.CharField(max_length=50)

 

opisanie = models.TextField()

dlitelnost = models.FloatField()

format = models.CharField(max_length=3)

proizvodstvo = models.CharField(max_length=20)

rezhiser = models.CharField(max_length=50)

actors = models.TextField()

year = models.IntegerField()

image = models.ImageField(

upload_to="media/films",

height_field="image_height",

width_field="image_width"

)

image_height = models.PositiveIntegerField(

null=True,

blank=True,

editable=False,

default="525"

)

image_width = models.PositiveIntegerField(

null=True,

blank=True,

editable=False,

default="260"

)

trailer = models.URLField()

prokat = models.DateField(blank=True)

zhanr = models.ManyToManyField(Zhanr)

 

def __unicode__(self):

return self.name

 

def __str__(self):

return self.name

 

def zhanr_get(self):

a = ''

for i in self.zhanr.all():

a += i.name + ','

 

return a[:-1]

 

 

class Seans(models.Model):

date = models.DateField()

time = models.CharField(max_length=30)

film = models.ForeignKey('film', models.PROTECT)

price = models.CharField(validators=[validate_comma_separated_integer_list],max_length=100)

 

def __unicode__(self):

name = self.film + "," + str(self.date) + " " + str(self.time)

return name

 

def __str__(self):

name = self.film.name + ", " + str(self.date) + " " + str(self.time)[:5]

return name

 

def film_name_get(self):

return self.film.name

 

def save(self, *args, **kwargs):

for seans in Seans.objects.filter(date=getattr(self, 'date')):

 

time1 = datetime.datetime.combine(

getattr(self, 'date'),

datetime.datetime.strptime(

getattr(self, 'time'),

'%H:%M').time()

)

time2 = datetime.datetime.now()

 

if getattr(self, 'time') == seans.time or time1 < time2:

raise ValidationError('Выбрано неподходящее время для сеанса.')

 

super(Seans, self).save(*args, **kwargs)

 

 

class Bron(models.Model):

seans_id = models.ForeignKey('Seans',models.PROTECT)

forname = models.CharField(max_length=20)

row = models.IntegerField(default=0)

seat = models.IntegerField(default=0)

price = models.IntegerField(default=0)

 

def __unicode__(self):

return self.forname

 

def __str__(self):

return self.forname

 

def seans_get(self):

return self.seans_id.film.name

 

def seans_date_get(self):

return self.seans_id.date

 

def seans_time_get(self):

return self.seans_id.time

 

 

class Bilet(models.Model):

seans_id = models.ForeignKey('Seans',models.PROTECT)

row = models.IntegerField(default=0)

seat = models.IntegerField(default=0)

price = models.IntegerField(default=0)

 

def save(self, *args, **kwargs):

sell, created = Sell.objects.get_or_create(seans_id=getattr(self, 'seans_id'))

sell.kol_bil += 1

sell.summa += int(getattr(self, 'price'))

sell.save()

 

super(Bilet, self).save(*args, **kwargs)

 

def __unicode__(self):

return str(self.id)

 

def __str__(self):

return str(self.id)

 

def seans_get(self):

return self.seans_id.film.name

 

def seans_date_get(self):

return self.seans_id.date

 

def seans_time_get(self):

return self.seans_id.time

 

 

class Sell(models.Model):

seans_id = models.ForeignKey('Seans',models.PROTECT)

kol_bil = models.IntegerField(default=0)

summa = models.IntegerField(default=0)

 

def __unicode__(self):

return str(self.seans_id)

 

def __str__(self):

return str(self.seans_id)

 

def get_film_name(self):

return self.seans_id.film.name

 

def get_seans_date(self):

return self.seans_id.date

 

def get_seans_time(self):

return self.seans_id.time

 

admin

from django.contrib import admin

from django.contrib.admin import DateFieldListFilter

 

from films.models import *

 

 

# Register your models here.

 

@admin.register(Zhanr)

class ZhanrAdmin(admin.ModelAdmin):

list_display = ('name',)

search_fields = ('name',)

 

 

@admin.register(Bilet)

class BiletAdmin(admin.ModelAdmin):

list_display = ('id', 'seans_get', 'seans_date_get', 'seans_time_get', 'row', 'seat', 'price',)

search_fields = ('seans_id__film__name',)

list_filter = (

('seans_id__date', DateFieldListFilter),

)

 

 

@admin.register(Film)

class FilmAdmin(admin.ModelAdmin):

list_display = ('name', 'proizvodstvo', 'year', 'rezhiser', 'zhanr_get',)

search_fields = ('name', 'proizvodstvo', 'year', 'rezhiser', 'zhanr__name')

 

 

@admin.register(Seans)

class SeansAdmin(admin.ModelAdmin):

list_display = ('id', 'film', 'date', 'time', 'price',)

search_fields = ('film__name',)

list_filter = (

('date', DateFieldListFilter),

)

fieldsets = ((

None, {

'fields': ('date', 'time', 'film', 'price')

}),

)

 

def formfield_for_foreignkey(self, db_field, request, **kwargs):

if db_field.name == "film":

kwargs["queryset"] = Film.objects.filter(prokat__lte=datetime.datetime.today().date())

return super(SeansAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

 

 

@admin.register(Bron)

class BronAdmin(admin.ModelAdmin):

list_display = ('forname', 'seans_get', 'seans_date_get', 'seans_time_get', 'row', 'seat', 'price')

search_fields = ('seans_id__film__name', 'forname',)

list_filter = (

('seans_id__date', DateFieldListFilter),

)

 

 

@admin.register(Sell)

class SellAdmin(admin.ModelAdmin):

list_display = ('get_film_name', 'get_seans_date', 'get_seans_time', 'kol_bil', 'summa',)

search_fields = ('seans_id__film__name', 'seans_id__date',)

list_filter = (

('seans_id__date', DateFieldListFilter),

)

 

 

пизда тут говнокода, поле прайс странное и валидаторы странные.

Отключи у модели Film филд Image и посмотри повторяется ли ошибка.

ошибка все также вылазиет, я это уже просто пробывал

да мне из этого говно кода надо было понять как создавать фильм  и добавлять к  нему места + сеансы  :lol:  

 

ну у тебя не может сохранить какую-то из моделей. Потому что ты пытаешься использовать List там где ожидается строка. Ищи филд и модель. Возможно это price ты там лютую хуйню делаешь.


 

<< твой комментарий очень важен для форума.

Поделиться сообщением


Ссылка на сообщение

 


Exception Type: IntegrityError at /admin/films/film/add/
Exception Value: NOT NULL constraint failed: films_film.url_name

выдает уже эту дичь, я вообще думаю это на потом оставить, думал это легенько будет :trollface:  а тут ещё и ебаться с чужим кодом приходиться

Поделиться сообщением


Ссылка на сообщение
(изменено)

 

 

Exception Type: IntegrityError at /admin/films/film/add/

Exception Value: NOT NULL constraint failed: films_film.url_name

выдает уже эту дичь, я вообще думаю это на потом оставить, думал это легенько будет :trollface:  а тут ещё и ебаться с чужим кодом приходиться

ну это уже проще ты пытаешься '' в урл записать. А филд не допускает.

trailer = models.URLField() 


Изменено пользователем SKYnv

 

<< твой комментарий очень важен для форума.

Поделиться сообщением


Ссылка на сообщение
(изменено)

 

 

ну есть в твоем могучем апи альфа банка описание всех банковских продуктов хотя бы?

 

мы тут парсеры обсуждаем, а ты вкидываешь как доказательство своей правоты исключительно апи для зарегистрированных юзеров предназначенное для совершения платежей через процессинг банка

 

причем тут вообще парсинг, это невозможно делать кроме как через апи

Это не отменяет того , что то что скинул Милки Вей это именно апи

 

еще раз, это апи процессинга, а не апи для чтения данных

 

банку нахуй не надо ничего отдавать на чтение другим, никто не будет бесплатно делать ему рекламу, а упаковывать в апи не поддающиеся логике сведения это только геморрой себе на жопу

 

курсы и адреса банкоматов/отделений это максимум, тк могут использоваться какими-нибудь яндекс.картами или еще какой хуйней

всё остальное либо вообще никому нельзя показывать, либо хуй покажешь

 

Хуй пойми о чем ты, понятное дело у всех(а не только у банков) есть публичным методы которые доступные всем и есть внутренние методы для своих нужд. Какие "апи процессинга" "апи чтения данных"  хз кароче о чем ты)


Изменено пользователем fessnik
Milky_Way понравилось это

Поделиться сообщением


Ссылка на сообщение

бля, вы заебали уже, вы хоть раз контекст разговора прочитайте, прежде чем отвечать

Начинают про парсинг страничек, идет вброс типа даже у банков не надо ничего парсить, есть апи на всё, я пишу что нету нихуя там на чтение, и вы начинаете хуйню какую-то городить.

 

Какое апи для получения ПУБЛИЧНЫХ данных вам хоть один банк выдаст? У него их нет практически, кроме описаний продуктов, курсов, да адресов отделений.

 

Да никто не знает что вообще можно там в этом апи продуктов выдавать, вы какой пример мне структуры данных не сделаете, я его обоссу на раз два.

Там нечего выгружать кроме максимум названия продукта и списка говна произвольным текстом, которое и пишут на сайте, потому что писать больше нечего из-за сложности внутренней структуры.

Банки давно уже не соревнуются процентными ставками, а только тоннами доп юзлесных фич, обложенными сотнями ограничений, которые даже в договоре могут быть не все прописаны, а сделаны в виде "смотрите партнеров в пдфке на сайте каждый день и ниибет"

 

Если сильно запотеть то офк можно, но еще раз, нахуй не надо, тк бесплатно рекламу твоему банку никто в здравом уме делать не будет, ибо это единственное чем он занимается - как наебать клиентов так, чтобы он прочел только те условия, которые хорошие и не прочел условия, за которые с него будут драть деньги.


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

бля, вы заебали уже, вы хоть раз контекст разговора прочитайте, прежде чем отвечать

Начинают про парсинг страничек, идет вброс типа даже у банков не надо ничего парсить, есть апи на всё, я пишу что нету нихуя там на чтение, и вы начинаете хуйню какую-то городить.

 

Какое апи для получения ПУБЛИЧНЫХ данных вам хоть один банк выдаст? У него их нет практически, кроме описаний продуктов, курсов, да адресов отделений.

 

Да никто не знает что вообще можно там в этом апи продуктов выдавать, вы какой пример мне структуры данных не сделаете, я его обоссу на раз два.

Там нечего выгружать кроме максимум названия продукта и списка говна произвольным текстом, которое и пишут на сайте, потому что писать больше нечего из-за сложности внутренней структуры.

Банки давно уже не соревнуются процентными ставками, а только тоннами доп юзлесных фич, обложенными сотнями ограничений, которые даже в договоре могут быть не все прописаны, а сделаны в виде "смотрите партнеров в пдфке на сайте каждый день и ниибет"

 

Если сильно запотеть то офк можно, но еще раз, нахуй не надо, тк бесплатно рекламу твоему банку никто в здравом уме делать не будет, ибо это единственное чем он занимается - как наебать клиентов так, чтобы он прочел только те условия, которые хорошие и не прочел условия, за которые с него будут драть деньги.

@@Vova 

Kant понравилось это

 

<< твой комментарий очень важен для форума.

Поделиться сообщением


Ссылка на сообщение
(изменено)

Хз кароче, можно забить, не интересный спор


Изменено пользователем fessnik

Поделиться сообщением


Ссылка на сообщение

какой электронной читалкой хорошо читаются книги, сверстанные в пдфках? у меня есть старенький-добренький киндл, но им читать что либо кроме сплошного текста - сущий ад

Поделиться сообщением


Ссылка на сообщение
(изменено)

с большим экраном?

(причем здесь программирование, алло)


Изменено пользователем Just.Doit

 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение

очевидно, он читает программы


65881.png

Поделиться сообщением


Ссылка на сообщение

ну разве что чуток больше дефолтного киндла

 

при том, что кокрас тыке программисты и читают книги, преимущественно сверстанные в пдфках, а чтиво мертво и хули там постить))

Поделиться сообщением


Ссылка на сообщение

новый киндл


In a mad world, only the mad are sane. 

 

ggg.gif

 

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...