Display a Model Field (CharField) as a Dynamic URL | Error: invalid literal for int() with base 10: ' '
Display a Model Field (CharField) as a Dynamic URL | Error: invalid literal for int() with base 10: ' '
我的目标是让“.com/listings/listing”中路径的 "listing" 部分成为动态 'address' 字段名为 "Listing" 的模型。
(“6226Bourbonais”是此问题的地址字段示例。)
所以我基本上是为了:.com/listings/6226Bourbonais
我已经成功获取模板显示,主键为url,目前是自动生成的ID,一个整数。
但是当我尝试对其进行逆向工程以显示列表模型的地址字段时,它给了我错误:
invalid literal for int() with base 10: '6226Bourbonais'
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='listings'),
path('<str:listing_address>', views.listing, name='listing'),
path('search', views.search, name='search'),
]
views.py
def listing(request, listing_address):
listing = get_object_or_404(Listing, id=listing_address)
context = {
'listing': listing,
}
return render(request, 'listings/listing.html', context)
models.py
class Listing(models.Model):
agent = models.ForeignKey(Agent, on_delete=models.DO_NOTHING)
title = models.CharField(max_length=200)
address = models.CharField(max_length=
year_built = models.IntegerField(default=1900)
build_type = models.CharField(max_length=100)
city = models.CharField(max_length=100)
state = models.CharField(max_length=100)
zipcode = models.CharField(max_length=20)
...(etc.)
listing.html 模板的标记片段
{% if listings %}
{% for listing in listings %}
<div class="col s12 l4">
<a href="{% url 'listing' listing.address %}" class="">
<div class="card z-depth-2">
<div class="card-image">
虽然确实出现错误,但当我查看页面上的 URL 时,它是正确的。 "mysite.com/listings/6226Bourbonais"
所以我认为路由正在工作,但错误与 Django 不知道如何处理 str 和 int 有关。
我是 django 的新手,非常感谢您的帮助。
谢谢
您就快完成了:您只需要使用地址字段作为查找:
listing = get_object_or_404(Listing, address=listing_address)
我的目标是让“.com/listings/listing”中路径的 "listing" 部分成为动态 'address' 字段名为 "Listing" 的模型。 (“6226Bourbonais”是此问题的地址字段示例。)
所以我基本上是为了:.com/listings/6226Bourbonais
我已经成功获取模板显示,主键为url,目前是自动生成的ID,一个整数。 但是当我尝试对其进行逆向工程以显示列表模型的地址字段时,它给了我错误:
invalid literal for int() with base 10: '6226Bourbonais'
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='listings'),
path('<str:listing_address>', views.listing, name='listing'),
path('search', views.search, name='search'),
]
views.py
def listing(request, listing_address):
listing = get_object_or_404(Listing, id=listing_address)
context = {
'listing': listing,
}
return render(request, 'listings/listing.html', context)
models.py
class Listing(models.Model):
agent = models.ForeignKey(Agent, on_delete=models.DO_NOTHING)
title = models.CharField(max_length=200)
address = models.CharField(max_length=
year_built = models.IntegerField(default=1900)
build_type = models.CharField(max_length=100)
city = models.CharField(max_length=100)
state = models.CharField(max_length=100)
zipcode = models.CharField(max_length=20)
...(etc.)
listing.html 模板的标记片段
{% if listings %}
{% for listing in listings %}
<div class="col s12 l4">
<a href="{% url 'listing' listing.address %}" class="">
<div class="card z-depth-2">
<div class="card-image">
虽然确实出现错误,但当我查看页面上的 URL 时,它是正确的。 "mysite.com/listings/6226Bourbonais" 所以我认为路由正在工作,但错误与 Django 不知道如何处理 str 和 int 有关。
我是 django 的新手,非常感谢您的帮助。 谢谢
您就快完成了:您只需要使用地址字段作为查找:
listing = get_object_or_404(Listing, address=listing_address)