作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 Django 中将一个变量从一个 View 传递到另一个 View ,但不确定最佳方法。
下面的“defaultCreateView”是一个创建新数据库条目的表单,并且有一个我想自动填写的必填字段(device_id)。所以我的想法是我可以在 URL 中传递它。使用下面我的模板中显示的按钮可以访问此表单。所以想法是,第一个 View 将变量传递给按钮所在的模板,然后此按钮通过 href 将 device_id 添加到 URL。
是否有更简单/更好的方法来完成此任务?
在此先感谢您的帮助。
urls.py
urlpatterns = [
path('<int:pk>/edit/', defaultUpdateView.as_view(), name='default_edit'),
path('<int:pk>/', defaultDetailView.as_view(), name='default_detail'),
path('<int:pk>/delete/', defaultDeleteView.as_view(), name='default_delete'),
path('<int:device>', DefaultsListView.as_view(), name='Default_Listview'),
path('<int:device>/new/', defaultCreateView.as_view(), name='default_new'),
path('Defaultsapidata/', apiDefaultsListView.as_view(), name='Defaults_apidata_list'),
path('<int:pk>/changedefaults/', changeDefaultsViewSingle.as_view()),
]
Views.py
class DefaultsListView(LoginRequiredMixin,ListView):
model = models.DefaultDMLSProcessParams
template_name = 'defaults_list.html'
login_url = 'login'
def get_queryset(self):
return super(DefaultsListView, self).get_queryset().filter(device_id=self.kwargs['device'])
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
deviceID = self.kwargs['device']
context['deviceID'] = deviceID
return context
class defaultCreateView(LoginRequiredMixin,CreateView):
model = models.DefaultDMLSProcessParams
template_name = 'default_new.html'
fields= ['defaultParamDescrip','processType','processNotes',]
login_url = 'login'
def form_valid(self, form):
form.instance.customerTag = self.request.user.customerTag
form.instance.device_id = self.kwargs['device']
return super().form_valid(form)
defaults_list.html
<a class="btn btn-primary btn-lg"
href="{% url 'default_new' {{deviceID}} %}" role="button"> Add New Default Parameter</a>
编辑当我尝试访问 defaults_list.html 时,我得到一个“NoReverseMatch at/defaults/41”,但是当我将 defaultCreateView 的 URL 更改为:
path('new/', defaultCreateView.as_view(), name='default_new'),
最佳答案
def update_project_filter(request):
...
selected_project_id = project_form.cleaned_data["Project_Name"].id
request.session['selected_project_id'] = selected_project_id
...
def update_project(request):
...
selected_project_id = request.session.get('selected_project_id')
...
假设你已经激活了“django.contrib.sessions.middleware.SessionMiddleware”
关于django - 如何在 Django 中将变量从一个 View 传递到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52896040/
我是一名优秀的程序员,十分优秀!