django - django:url更改取决于模型存在
问题描述
我想让用户访问页面取决于模型是否存在。我使用 CBV。
我必须控制视图吗?或网址?
FBV 是控制 url 的唯一方法吗?
如何控制用户访问 url?希望帮助我。
我想控制例如:(如您所知,这是无效的语法。希望您知道我在说什么。)
from django.urls import path
from . import views, models
app_name = "papers"
urlpatterns = [
path(
"memberagreement/<int:preassociation_pk>/",
{% if models.MemberAgreement.association.get(pk=preassociaion_pk) is not NULL %}
views.member_agreement_detail_vc.as_view(),
{% else %}
views.member_agreement_create_vc.as_view(),
{% endif %}
name="member_agreement_vc",
)
]
我添加了我的views.py:(它在模型存在时工作,但如果模型不存在,我无法加载我的模板......)
def member_agreement_vc(request, preassociation_pk):
preassociation = preassociation_models.Preassociation.objects.get(
pk=preassociation_pk
)
try:
member_agreement = models.MemberAgreement.objects.get(pk=1)
return render(
request,
"papers/member_agreement/detail.html",
{"member_agreement": member_agreement},
)
except models.MemberAgreement.DoesNotExist:
form_class = forms.CreateMemberAgreementFormVC
template_name = "papers/member_agreement/create.html"
def form_valid(self, form):
pk = self.kwargs.get("preassociation_pk")
member_agreement = form.save()
# content
# association
# writer
# participants
# category
# is_business
# is_general
# number_of_investment_account
# name
# resident_registration_number
# address
# contact
member_agreement.writer = self.request.user
member_agreement.association = preassociation_models.Preassociation.objects.get(
pk=pk
)
member_agreement.category = "member_agreement"
member_agreement.is_business = True
member_agreement.is_general = False
member_agreement.save()
form.save()
return redirect(
reverse(
"preassociations:paper",
kwargs={"pk": member_agreement.association.pk},
)
)
解决方案
你问的是什么,我认为是不可能的。URL
只是一条路径,或者是一种除了步行之外你什么都不做的方式。就像你是路人一样,你只会走路,然后当你必须决定去哪里时,要么你会要求谷歌这样做,要么是附近的人。所以,道路就像url
谷歌地图,就像views
你决定去哪里一样。
然后我将尝试使用视图的方式,
// urls.py
// Add your path
// views.py
from .models import YourModel // import model
def decideWhereToGo(request):
modelExist = YourModel.objects.filter(someField=someValue).exists()
if modelExist:
// Do sthg
else:
// redirect to the url where you want to send if model does not exists
推荐阅读
- javascript - 如何使用 JavaScript 优雅地将 Windows 路径转换为 Unix 路径?
- post - 是标签发布方法还是获取方法?
- cassandra - Cassandra 中的自定义分区器
- reactjs - 如何默认修改本地url
- php - 带有 iCal Parser 的 PHP 函数减慢页面加载时间
- javascript - 在 mxgraph 中创建反向 mxHierarchical 布局
- python - 如何在python中做一个日期和时间列表
- html - 使用 CSS 样式规则创建一个容器元素,以便它围绕其浮动内容展开
- excel - 用户表单以看似相反的顺序循环
- laravel - 由于使用 laravel 的未知错误而无法上传文件