Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 19.12.2017
Сообщений: 22

Не определяется id объекта

25.12.2020, 15:30. Показов 3385. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите разобраться. пытаюсь вывести объекты бд, с ссылками на страницы.
Название поста, ссылка на страницу поста по id, все работает.
Точно также пытаюсь сделать ссылку на автора, но id не отображается/не определяется
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<html>
{% if latest_post_list %}
    <ul>
    
    {% for post in latest_post_list %}
        <li><a href="/polls/{{ post.id }}/Post1">{{ post.name_post}}</a></li>
        <br>
        
    {% endfor %}
    </ul>
{% else %}
    <p>No posts are available.</p>
{% endif %}
 
 
{% if latest_author_list %}
    <ul>
    {% for author in latest_author_list %}
        
        <li><a href="/polls/{{ author.id }}/Author1">{{ author.last_name}}</a></li>
        <br>
        
    {% endfor %}
    </ul>
{% else %}
    <p>No posts are available.</p>
{% endif %}
Миниатюры
Не определяется id объекта   Не определяется id объекта  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.12.2020, 15:30
Ответы с готовыми решениями:

HDD определяется в BIOS но не запускается и неправильно определяется объем диска
Всем доброго времени суток, прошу вас о помощи в борьбе с моим винтом от ноута. Попробую описать подробно, как все было. В один прекрасный...

JF v95c не определяется (или определяется как USB MEMORY BAR)
Недавно столкнулся с такой ситуацией. Подключаю флэху а она не работает... т.е. на win xp определяется как неопознанное устройство. на...

Не определяется жесткий диск Seagate Barracuda st2000dm001. Так вот, в биосе он определяется а в windows нет.
Здравствуйте! Помогите пожалуйста разобраться. Имеется жесткий диск Seagate Barracuda st2000dm001. Так вот, в биосе он определяется а в...

7
21 / 12 / 9
Регистрация: 12.02.2020
Сообщений: 126
25.12.2020, 18:21
Dritmy, где вьюха, где модели? Или на кофейной гуще гадать что там у тебя
<a href="/polls/{{ post.id }}/Post1"> - извини, но это какая-то дичь
0
0 / 0 / 1
Регистрация: 05.02.2021
Сообщений: 21
05.02.2021, 18:17
Доброго времени суток. Видимо, у меня похожая проблема, поэтому пишу сюда. Не могу разобраться, но чувствую, что какая-то ерунда. Для знающих людей - раз плюнуть ))).
Ниже размещаю код. Новостной сайт с регистрацией пользователя, созданием новости, ее редактированием и комментарием к ней. В общем, все работает, кроме небольшого бага. Когда работаю как незарегистрированный пользователь, то все в порядке. Все формы и ссылки работают. Но когда регистрируюсь, то при отправке формы получаю ошибку:
Reverse for 'edit' with keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: ['news/(?P<pk>[0-9]+)/edit$']
Странно, что внутри метода post() класса NewsDetailView, в операторе if одна ветка выдает ошибку, а другая подобная работает.

forms.py
Python
1
2
3
4
5
class CommentForm(forms.ModelForm):
 
    class Meta:
        model = Comment
        fields = ['user_name', 'text_comment']
2 модели в models.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class News(models.Model):
    title = models.CharField(max_length=100, verbose_name='Заголовок', db_index=True)
    content = models.TextField(default='', verbose_name='Содержание')
    create_date = models.DateField(auto_now_add=True, verbose_name='Дата создания')
    edit_date = models.DateField(auto_now=True, verbose_name='Дата редактирования')
    activity = models.BooleanField(default=True, verbose_name='Активность')
 
    def __str__(self):
        return '{}, {}'.format(self.title, self.create_date)
 
    def get_absolute_url(self):
        return reverse('mane_page')
 
    class Meta:
        ordering = ['-create_date']
 
 
class Comment(models.Model):
    user_name = models.CharField(max_length=30, verbose_name='Пользователь', db_index=True)
    text_comment = models.TextField(default='', verbose_name='Комментарий')
    news = models.ForeignKey('News', on_delete=models.CASCADE, default=None, null=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE, default=None, null=True)
 
    def __str__(self):
        return self.user_name
urls.py
Python
1
2
3
4
5
6
7
urlpatterns = [
    path('', views.ManePage.as_view(), name='mane_page'),
    path('create', views.NewsCreateView.as_view(), name='create'),
    path('news', views.NewsListView.as_view(), name='news'),
    path('news/<int:pk>/', views.NewsDetailView.as_view(), name='news_detail'),
    path('news/<int:pk>/edit', views.NewsUpdateView.as_view(), name='edit'),
]
views.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
class ManePage(View):
    def get(self, request):
        return render(request, 'app_news/mane_page.html')
 
 
class NewsCreateView(generic.CreateView):
    model = models.News
    fields = ['title', 'content', 'activity']
 
 
class NewsUpdateView(generic.UpdateView):
    model = models.News
    fields = ['title', 'content', 'activity']
 
 
class NewsListView(generic.ListView):
    model = models.News
    template_name = 'app_news/news.html'
    context_object_name = 'news'
 
 
class NewsDetailView(generic.DetailView):
    model = models.News
    template_name = 'app_news/news_detail.html'
    context_object_name = 'news'
 
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        comment_form = forms.CommentForm()
        if self.request.user.is_authenticated:
            comment_form.fields['user_name'].widget = HiddenInput()
        context['comment_form'] = comment_form
        return context
 
    def post(self, request, pk):
        if request.user.is_authenticated:
            comment_form = forms.CommentForm(request.POST)
            if comment_form.is_valid():
                models.Comment.objects.create(user_name=request.user.username,
                                              text_comment=comment_form.cleaned_data['text_comment'],
                                              news=models.News.objects.get(id=pk),
                                              user=request.user)
                return redirect('news')
        else:
            comment_form = forms.CommentForm(request.POST)
            if comment_form.is_valid():
                models.Comment.objects.create(user_name=comment_form.cleaned_data['user_name'] + ' Аноним',
                                              text_comment=comment_form.cleaned_data['text_comment'],
                                              news=models.News.objects.get(id=pk))
                return redirect('news')
        return render(request, 'app_news/news_detail.html', {'comment_form': comment_form})
0
26 / 36 / 15
Регистрация: 15.01.2017
Сообщений: 311
06.02.2021, 14:22
вот возьми! и найди! в своем массиве=latest_post_list
и, задумайся
0
0 / 0 / 1
Регистрация: 05.02.2021
Сообщений: 21
07.02.2021, 19:49
То, что очевидно для вас, может совсем иначе выглядеть для другого. Мне, кажется ваш ответ, в общем-то не имеет смысла и не стоило тратить на него время, равно как и "разуй глаза", "включи мозги", "читай документацию" и прочее. Я и разул, и включил, и прочел. Но ситуация не прояснилась, поэтому и написал сюда. Логика моих рассуждений следующая,,, URL (/news/<intk>) обрабатывается классом NewsDetailView. Метод post() этого класса получает в качестве аргументов объект request и целое pk. В методе post() 2 if-а - работа под зарегистрированным пользователем и не зарегистрированным. Во втором случае все работает, следовательно, pk корректно передается в post(). Но для первого случая выдается ошибка Reverse for 'edit' with keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: ['news/(?P<pk>[0-9]+)/edit$'], то есть pk пустой. И почему всплывает url 'edit' ('/news/<intk>/edit')? Ведь отрабатывает метод post() класса NewsDetailView для url 'news/<intk>'.
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
07.02.2021, 20:05
Для начала неплохо бы научиться в теги код оборачивать. Отталкивает неверное оформление потенциальных помощников.
1
26 / 36 / 15
Регистрация: 15.01.2017
Сообщений: 311
08.02.2021, 08:15
<a href="/polls/{{ author.id }}/Author1">
ну, и какой смысл в документации....
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
14.02.2021, 22:10
и в таких случаях лучше определять метод
Python
1
2
def get_absolute_url(self)
     return reverse('author', args=[self.id])
админки появятся ссыки на страницу
а в шаблоне делается так
Python
1
2
3
{% url 'author' author.id %},
# или так при наличии get_absolute_url
{{author.get_absolute_url}}
Добавлено через 6 минут
Цитата Сообщение от Dritmy Посмотреть сообщение
"/polls/{{ author.id }}/Author1"
это плахой вариант так как ссылка может изменится потом замучаетесь искать и править
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.02.2021, 22:10
Помогаю со студенческими работами здесь

HDD определяется в BIOS но не определяется в ОС
Доброе время суток! Столкнулся с проблемой связанным с винтом. После перезагрузки компа винчестер не определяется вин 7. Запуск винды при...

Nokia N95 определяется на windows 8.1, но не определяется на windows 7
Имеется мобила Nokia N95. Решил подключить к компу (Windows 8.1). Всё ОК. А тут вдруг решил к ноуту трубу воткнуть. Пишет, что &quot;не...

Вывод фото из папки объекта, название которой совпадает с ID этого объекта
Д.День. суть вопроса такая есть путь в корне CMS images/objects_db/xxxxA где xxxxA это папки (создаваемые сторонним софтом) с...

Требуется ли при удалении объекта посредством delete указывать тип объекта?
например, есть указателиvoid *p1; void *p2; есть VCL-объект TButton, есть самописный класс TMyClass; создаются объектыp1=new...

В экземпляре объекта не задана ссылка на объект при динамическом создании объекта
Выдается ошибка NullReferenceException в private void button2_Click(object sender, EventArgs e) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru